Difference between revisions of "Main Page"

From gem5
Jump to: navigation, search
Line 1: Line 1:
 
<!-- Beginning of header section -->{|style="width:100%;text-align:center;white-space:nowrap;color:#000" |
 
<!-- Beginning of header section -->{|style="width:100%;text-align:center;white-space:nowrap;color:#000" |
<div style="font-size:202%;border:none;margin: 0;padding:.1em;text-align:center;color:#000">The M5 Simulator System</div>
+
<div style="font-size:202%;border:none;margin: 0;padding:.1em;text-align:center;color:#000">The gem5 Simulator System</div>
 
<div style="font-size:140%;border:none;margin: 0;padding:.1em;text-align:center;color:#000">A modular platform for computer system architecture research</div>
 
<div style="font-size:140%;border:none;margin: 0;padding:.1em;text-align:center;color:#000">A modular platform for computer system architecture research</div>
 
|}<!-- Portals Follow -->
 
|}<!-- Portals Follow -->
  
 
===About===
 
===About===
* M5 is a modular platform for computer system architecture research, encompassing system-level architecture as well as processor microarchitecture.
+
* The gem5 simulator is a modular platform for computer system architecture research, encompassing system-level architecture as well as processor microarchitecture.
  
 
===News===
 
===News===
 
* [[2011-05-01]] - [[ISCA 2011 Tutorial|We're holding a tutorial]] at [http://isca2011.umaine.edu/index.php?option=com_content&view=article&id=12&Itemid=8 "ISCA 2011"]. Please join us in San Jose on Sunday June 5th, 2011.  
 
* [[2011-05-01]] - [[ISCA 2011 Tutorial|We're holding a tutorial]] at [http://isca2011.umaine.edu/index.php?option=com_content&view=article&id=12&Itemid=8 "ISCA 2011"]. Please join us in San Jose on Sunday June 5th, 2011.  
 
* [[2011-05-01]] - The M5 and GEMS simulators are in the process of merging. As part of these changes you'll see references to gem5 (pronounced gem-five), a new website, logo, mailing lists, etc in the coming months.
 
* [[2011-05-01]] - The M5 and GEMS simulators are in the process of merging. As part of these changes you'll see references to gem5 (pronounced gem-five), a new website, logo, mailing lists, etc in the coming months.
* [[2008-10-15]] - We've added a page on [[Adding Functionality]] while preserving the ability to update to new versions of M5.
 
 
  
 
=== Download ===
 
=== Download ===
* The current public release of M5 is available at http://repo.m5sim.org.  (See the [[Repository]] page for details.)  Auxiliary files are available on on our [[Download]] page.  Please look at the sidebar for links to file bugs and for mailing list subscription information.  
+
* The current public release of the gem5 simulator is available at http://repo.gem5.org.  (See the [[Repository]] page for details.)  Auxiliary files are available on on our [[Download]] page.  Please look at the sidebar for links to file bugs and for mailing list subscription information.  
  
 
===Key features===
 
===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.
+
* ''Pervasive object orientation.'' Major simulation structures (CPUs, busses, caches, etc.) are represented as objects, both externally and internally. The gem5 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. The simulator'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 use a common high-level ISA description.
+
* ''Multiple interchangeable CPU models.'' The gem5 simulator 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 use a common high-level ISA description.
  
* ''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.
+
* ''Event-driven memory system.'' The gem5 simulator 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; gem5 currently includes a simple snooping cache coherence protocol.
* ''Multiple ISA support.''  M5 decouples ISA semantics from its timing CPU models, enabling effective support of multiple ISAs.  M5 currently supports the Alpha, SPARC, MIPS, and ARM ISAs, with x86 support in progress. See [[Supported Architectures]] for more information.
+
* ''Multiple ISA support.''  The gem5 simulator decouples ISA semantics from its timing CPU models, enabling effective support of multiple ISAs.  The gem5 simulator currently supports the Alpha, ARM, SPARC, MIPS, POWER and x86 ISAs. See [[Supported Architectures]] for more information.
 
* ''Full-system capability.''
 
* ''Full-system capability.''
** '''Alpha''': 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.
+
** '''Alpha''': The gem5 simulator 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.
** '''ARM''': M5 can model a single core of a Realview ARM development board with sufficient detail to boot unmodified Linux 2.6.35+ with an simple or out-of-order CPU. MP support is in progress.
+
** '''ARM''': The gem5 simulator can model a single core of a Realview ARM development board with sufficient detail to boot unmodified Linux 2.6.35+ with an simple or out-of-order CPU. MP support is in progress.
** '''SPARC''': M5 models a single core of a UltraSPARC T1 processor with sufficient detail to boot Solaris in a similar manner as the Sun T1 Architecture simulator tools (building the hypervisor with specific defines and using the HSMID virtual disk driver).
+
** '''SPARC''': The gem5 simulator models a single core of a UltraSPARC T1 processor with sufficient detail to boot Solaris in a similar manner as the Sun T1 Architecture simulator tools (building the hypervisor with specific defines and using the HSMID virtual disk driver).
** '''MIPS/x86''': In progress
+
** '''x86''': The gem5 simulator supports a standard PC platform
* ''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.
+
* ''Multiprocessor / multi-system capability.'' Thanks to gem5'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, gem5 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===
 
===Additional details===
  
* ''Application-only support.'' In application-only (non-full-system) mode, M5 can execute a variety of architecture/OS binaries with OS emulation or SimpleScalar Alpha EIO trace files.
+
* ''Application-only support.'' In application-only (non-full-system) mode, gem5 can execute a variety of architecture/OS binaries with OS emulation or SimpleScalar Alpha EIO trace files.
 
 
* ''Platforms.'' M5 runs on most operating systems (Linux, MacOS X, Solaris, OpenBSD, Cygwin) and architectures (x86, x86-64, SPARC, Alpha, and PPC). However, all guest platforms aren't supported on all host platforms (most notably Alpha requires little-endian hardware). It is readily portable to other hosts and other Unix-like operating systems that are supported by GCC. 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.
 
  
* ''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).
+
* ''Platforms.'' The gem5 simulator runs on most operating systems (Linux, MacOS X, Solaris, OpenBSD, Cygwin) and architectures (x86, x86-64, SPARC, Alpha, and PPC). However, all guest platforms aren't supported on all host platforms (most notably Alpha requires little-endian hardware). It is readily portable to other hosts and other Unix-like operating systems that are supported by GCC. Alpha binaries to run on gem5 (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 obsolete detailed CPU model) were derived from SimpleScalar. These portions are released separately under the SimpleScalar license. We have a new detailed CPU model that eliminates any need for the SimpleScalar code unless you use EIO traces. 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.'' The gem5 simulator is 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.
  
 
===Documentation===
 
===Documentation===
  
There are several sources of documentation for M5:
+
There are several sources of documentation for gem5:
  
 
* The most detailed and up-to-date documentation is on this wiki.  The [[documentation]] page serves as a general table of contents for these pages.  There is also a list of [[Frequently Asked Questions]].
 
* The most detailed and up-to-date documentation is on this wiki.  The [[documentation]] page serves as a general table of contents for these pages.  There is also a list of [[Frequently Asked Questions]].
Line 48: Line 44:
 
* We have archived material from various [[tutorials]], which provide a more organized overview than the wiki, along with some "how to" information not currently found elsewhere.
 
* We have archived material from various [[tutorials]], which provide a more organized overview than the wiki, along with some "how to" information not currently found elsewhere.
  
* A higher-level overview of M5 can be found in our article [http://doi.ieeecomputersociety.org/10.1109/MM.2006.82 ''The M5 Simulator: Modeling Networked Systems''] from the July/Aug 2006 issue of IEEE Micro. If you use M5 in your research, we would appreciate a citation to this paper in any publications you produce.
+
* A higher-level overview of M5 can be found in our article [http://doi.ieeecomputersociety.org/10.1109/MM.2006.82 ''The M5 Simulator: Modeling Networked Systems''] from the July/Aug 2006 issue of IEEE Micro. If you use gem5 in your research, we would appreciate a citation to this paper in any publications you produce.
  
* The M5 code is (somewhat sparsely) commented with [http://www.doxygen.org doxygen] comments. You can browse the doxygen-generated documentation [http://www.m5sim.org/docs here].
+
* The gem5 code is (somewhat sparsely) commented with [http://www.doxygen.org doxygen] comments. You can browse the doxygen-generated documentation [http://www.gem5.org/docs here].
  
 
=== Publications ===
 
=== Publications ===
A list of [[publications]] using the M5 simulator is also available. Please append to the list if you publish a paper using M5.
+
A list of [[publications]] using the gem5 simulator is also available. Please append to the list if you publish a paper using gem5.
  
 
===Acknowledgments===
 
===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).
+
The gem5 simulator has been developed with generous support from
 +
several sources, including the National Science Foundation, AMD, ARM,
 +
Hewlett-Packard, IBM, Intel, MIPS, and Sun.
 +
Individuals working on gem5 have also been supported by fellowships from
 +
Intel, Lucent, and the Alfred P. Sloan Foundation.
 +
This material is based upon work supported by the National Science
 +
Foundation under the following grants: CCR-0105503, CCR-0219640,
 +
CCR-0324878, EAI/CNS-0205286, and CCR-0105721.
  
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 recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF).
+
Any opinions, findings and conclusions or recommendations expressed in
 +
this material are those of the author(s) and do not necessarily
 +
reflect the views of the National Science Foundation (NSF) or any
 +
other sponsor.
  
 
[http://www.m5sim.org/dist/whym5.wav Why is it called M5?]
 
[http://www.m5sim.org/dist/whym5.wav Why is it called M5?]
 
__NOTOC__ __NOEDITSECTION__
 
__NOTOC__ __NOEDITSECTION__

Revision as of 22:20, 2 May 2011

The gem5 Simulator System
A modular platform for computer system architecture research

About

  • The gem5 simulator is a modular platform for computer system architecture research, encompassing system-level architecture as well as processor microarchitecture.

News

  • 2011-05-01 - We're holding a tutorial at "ISCA 2011". Please join us in San Jose on Sunday June 5th, 2011.
  • 2011-05-01 - The M5 and GEMS simulators are in the process of merging. As part of these changes you'll see references to gem5 (pronounced gem-five), a new website, logo, mailing lists, etc in the coming months.

Download

  • The current public release of the gem5 simulator is available at http://repo.gem5.org. (See the Repository page for details.) Auxiliary files are available on on our Download page. Please look at the sidebar for links to file bugs and for mailing list subscription information.

Key features

  • Pervasive object orientation. Major simulation structures (CPUs, busses, caches, etc.) are represented as objects, both externally and internally. The gem5 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. The simulator's internal object orientation (using C++) provides in addition to the usual software engineering advantages.
  • Multiple interchangeable CPU models. The gem5 simulator 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 use a common high-level ISA description.
  • Event-driven memory system. The gem5 simulator 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; gem5 currently includes a simple snooping cache coherence protocol.
  • Multiple ISA support. The gem5 simulator decouples ISA semantics from its timing CPU models, enabling effective support of multiple ISAs. The gem5 simulator currently supports the Alpha, ARM, SPARC, MIPS, POWER and x86 ISAs. See Supported Architectures for more information.
  • Full-system capability.
    • Alpha: The gem5 simulator 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.
    • ARM: The gem5 simulator can model a single core of a Realview ARM development board with sufficient detail to boot unmodified Linux 2.6.35+ with an simple or out-of-order CPU. MP support is in progress.
    • SPARC: The gem5 simulator models a single core of a UltraSPARC T1 processor with sufficient detail to boot Solaris in a similar manner as the Sun T1 Architecture simulator tools (building the hypervisor with specific defines and using the HSMID virtual disk driver).
    • x86: The gem5 simulator supports a standard PC platform
  • Multiprocessor / multi-system capability. Thanks to gem5'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, gem5 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, gem5 can execute a variety of architecture/OS binaries with OS emulation or SimpleScalar Alpha EIO trace files.
  • Platforms. The gem5 simulator runs on most operating systems (Linux, MacOS X, Solaris, OpenBSD, Cygwin) and architectures (x86, x86-64, SPARC, Alpha, and PPC). However, all guest platforms aren't supported on all host platforms (most notably Alpha requires little-endian hardware). It is readily portable to other hosts and other Unix-like operating systems that are supported by GCC. Alpha binaries to run on gem5 (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.
  • Licensing. The gem5 simulator is 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.

Documentation

There are several sources of documentation for gem5:

  • We have archived material from various tutorials, which provide a more organized overview than the wiki, along with some "how to" information not currently found elsewhere.
  • A higher-level overview of M5 can be found in our article The M5 Simulator: Modeling Networked Systems from the July/Aug 2006 issue of IEEE Micro. If you use gem5 in your research, we would appreciate a citation to this paper in any publications you produce.
  • The gem5 code is (somewhat sparsely) commented with doxygen comments. You can browse the doxygen-generated documentation here.

Publications

A list of publications using the gem5 simulator is also available. Please append to the list if you publish a paper using gem5.

Acknowledgments

The gem5 simulator has been developed with generous support from several sources, including the National Science Foundation, AMD, ARM, Hewlett-Packard, IBM, Intel, MIPS, and Sun. Individuals working on gem5 have also been supported by fellowships from Intel, Lucent, and the Alfred P. Sloan Foundation. This material is based upon work supported by the National Science Foundation under the following grants: CCR-0105503, CCR-0219640, CCR-0324878, EAI/CNS-0205286, and CCR-0105721.

Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF) or any other sponsor.

Why is it called M5?