Difference between revisions of "Documentation"

From gem5
Jump to: navigation, search
m (Development: Changed the name of an entry)
(Development: Adding separate pages on trace based and debugger based debugging.)
Line 35: Line 35:
== Development ==
== Development ==
# [[Functional Testers]]
# [[Functional Testers]]
## [[directedtest]]
#* [[directedtest]]
## [[memtest]]
#* [[memtest]]
## [[networktest]]
#* [[networktest]]
## [[Ruby Random Tester]]
#* [[Ruby Random Tester]]
# [[Debugging]]
# [[Debugging]]
#* [[Trace Based]]
#* [[Debugger Based]]
# [[Coding Style]]
# [[Coding Style]]
# [[Development_Tools_Contributing|Tools and Contributing]]
# [[Development_Tools_Contributing|Tools and Contributing]]

Revision as of 23:23, 28 September 2012


Welcome to the gem5 documentation. We've worked hard to add and organize everything in a more reasonable format, however we still haven't got to everything. All the documentation is a wiki, so we encourage you to add and edit sections as you find omissions and bugs.

Old Documentation: We have some old documentation and have been trying to move everything to the new format, but we haven't quite succeeded yet. If you don't find the answer you're looking for here, you might want to check the old documentation.

Getting Started

  1. Introduction - A quick introduction to gem5.
  2. Source Code - Information about the source code itself.
  3. Dependencies - Things you'll need that aren't part of gem5 itself.
  4. Build System - How to run or modify gem5's build system.

Running gem5

  1. Running gem5 - Starting a simulation from the command line.
  2. Checkpoints, Fast Forwarding - How to create Checkpoints, restore the checkpointed state, fast forward simulation.
  3. Regression Tests - Running the regression tests.
  4. SimObjects - What SimObjects are and how they work.
  5. Configuration Scripts - This and the next section need to be merged.
  6. Simulation Scripts Explained
  7. Summary gem5 Capabilities
  8. Architecture Support -- What architectures are supported by gem5 and what features of them are implemented
  9. Visualization -- Tools to help visualize what is going on in a system


  1. Compiling - How to compile workloads to run within gem5.
  2. Multiprogrammed workloads - Multiprogrammed workloads in SE mode.
  3. Multithreaded workloads - Multithreaded workloads in SE mode.
  4. Benchmark suites
    1. SPEC - SPEC benchmarks in SE mode.
    2. SPLASH - SPLASH benchmarks (SE or FS mode?)
    3. PARSEC - PARSEC benchmarks in FS mode.
  5. Disk images - Setting up a disk image.
  6. Linux kernel - Preparing a Linux kernel for use in gem5.
  7. m5ops - How to talk to the simulator from within a simulated workload.


  1. Functional Testers
  2. Debugging
  3. Coding Style
  4. Tools and Contributing
  5. Source Code Documentation
  6. Commit Access


  1. Events
  2. Statistics
  3. Utility Code
  4. Serialization

Memory System

  1. General Memory System - Shared infrastructure between the Classic and Ruby models
  2. Classic Memory System - Description of our easily configurable, bus-based memory system
  3. Ruby - Description of our detailed and flexible memory system. Lots of information here.
    1. SLICC Overview
    2. SLICC Transistion Guide

Full System

  1. Devices
    1. IDE Devices
    2. NIC Devices
    3. Timers
    4. UARTs and serial terminals
  2. Disks and Disk Images
  3. Interrupts

Syscall Emulation

  1. SE Mode

Instruction Execution

  1. Execution Basics
  2. Architectural State
  3. Address Translation

CPU Models

  1. Simple CPU Model
  2. Out-of-Order CPU Model
  3. In Order CPU Model
  4. Adding a New CPU Model

ISA Implementations

  1. Multiple ISA Support
  2. ISA Parser
  3. Alpha Implementation
  4. ARM Implementation
  5. MIPS Implementation
  6. Power Implementation
  7. SPARC Implementation
  8. X86 Implementation
  9. Defining ISAs