Difference between revisions of "Documentation"

From gem5
Jump to: navigation, search
(Running M5)
m
 
(75 intermediate revisions by 13 users not shown)
Line 1: Line 1:
 +
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.
 +
 +
For an overview, we have posted slides and most importantly '''video''' of a tutorial at HiPEAC Computer Systems Week. See [[Tutorials]].
 +
 +
'''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 [[OldDocumentation | the old documentation]].
 +
 
== Getting Started ==
 
== Getting Started ==
 
# [[Introduction]] - A quick introduction to gem5.
 
# [[Introduction]] - A quick introduction to gem5.
 
# [[Source Code]] - Information about the source code itself.
 
# [[Source Code]] - Information about the source code itself.
# [[External Dependencies]] - Things you'll need that aren't part of gem5 itself.
+
# [[Dependencies]] - Things you'll need that aren't part of gem5 itself.
 
# [[Build System]] - How to run or modify gem5's build system.
 
# [[Build System]] - How to run or modify gem5's build system.
 +
# [[Download | Full System and Benchmark Files]] - Disk images for operating system and benchmark applications, and how to install them.
 +
# [[gem5 101]] - Six part course covering all the basics of gem5 (and some advanced material too).
 +
 +
== Running gem5 ==
 +
# [[Running gem5]] - Starting a simulation from the command line.
 +
# [[Output Files]] - Output obtained from simulation
 +
# [[Checkpoints]], Fast Forwarding - How to create Checkpoints, restore the checkpointed state, fast forward simulation.
 +
# [[Regression Tests]] - Running the regression tests.
 +
# [[SimObjects]] - What SimObjects are and how they work.
 +
# [[Configuration / Simulation Scripts]] - Explains how to configure the simulator and run simulations
 +
# [[Visualization]] -- Tools to help visualize what is going on in a system
  
== Running M5 ==
+
== Workloads ==
# [[Running M5]]
+
# [[Compiling workloads | Compiling]] - How to compile workloads to run within gem5.
# [[SimObjects]]
+
# [[Multiprogrammed workloads | Multi-programmed]] - Multiprogrammed workloads in SE mode.
# [[Configuration Scripts]]
+
# [[Multithreaded workloads | Multi-threaded]] - Multithreaded workloads in SE mode.
# [[Summary gem5 Capabilities]]
+
# Benchmark suites
# [[m5ops]]
+
## [[SPEC benchmarks | SPEC]] - SPEC benchmarks in SE mode.
 +
## [[Splash benchmarks | SPLASH]] - SPLASH benchmarks (SE or FS mode?)
 +
## [[PARSEC benchmarks | PARSEC]] - PARSEC benchmarks in FS mode.
 +
# [[Disk images]] - Setting up a disk image.
 +
# [[Linux kernel]] - Preparing a Linux kernel for use in gem5.
 +
# [[m5ops]] - How to talk to the simulator from within a simulated workload.
  
 
== Development ==
 
== Development ==
# [[Debugging]]
+
# [[Functional Testers]]
# [[Development_Tools_Contributing|Tools and Contributing]]
+
#* [[Directed Test]]
 +
#* [[memtest]]
 +
#* [[Garnet Synthetic Traffic]]
 +
#* [[Ruby Random Tester]]
 +
# Debugging - features designed specifically to help you figure out what's going on.
 +
#* [[Trace Based Debugging | Trace-Based Debugging]]: figuring out what gem5 is doing using debug traces
 +
#* [[Debugger Based Debugging | Debugger-Based Debugging]]: using gdb to debug gem5
 +
#* [[Debugging Simulated Code]]: debugging the system/program running on top of gem5
 +
# [[Coding Style]]
 +
# [[Adding Functionality]]
 +
#* [[Managing Local Changes with Mercurial Queues]]
 +
#* [[Extras | Compiling Additional Code with EXTRAS]]
 
# [[Source Code Documentation]]
 
# [[Source Code Documentation]]
 +
# [[Submitting Contributions]]
  
 
== Infrastructure ==
 
== Infrastructure ==
Line 21: Line 55:
 
# [[Statistics]]
 
# [[Statistics]]
 
# [[Utility Code]]
 
# [[Utility Code]]
# [[Pseudo Instructions]]
+
# [[Serialization]]
  
 
== Memory System ==
 
== Memory System ==
# [[General Memory System]]
+
# [[General Memory System]] - Shared infrastructure between the Classic and Ruby models
# [[Classic Memory System]]
+
# [[Classic Memory System]] - Description of our easily configurable, crossbar-based memory system
# [[Ruby]]
+
# [[Ruby]] - Description of our detailed and flexible memory system.  Lots of information here.
 +
#* [[SLICC|SLICC Overview]]
 +
#* [[GEMS-gem5_SLICC_Transition_Guide|SLICC Transistion Guide]]
 +
#* [[Interconnection_Network]]
  
 
== Full System ==
 
== Full System ==
 
# [[Devices]]
 
# [[Devices]]
 +
## [[IDE Devices]]
 +
## [[NIC Devices]]
 +
## [[Timers]]
 +
## [[UARTs and serial terminals]]
 +
# [[Disks and Disk Images]]
 
# [[Interrupts]]
 
# [[Interrupts]]
  
Line 35: Line 77:
 
# [[SE Mode]]
 
# [[SE Mode]]
  
== CPUs and Execution ==
+
== Instruction Execution ==
 
# [[Execution Basics]]
 
# [[Execution Basics]]
 
# [[Architectural State]]
 
# [[Architectural State]]
 
# [[Address Translation]]
 
# [[Address Translation]]
# [[CPUs]]
+
== CPU Models ==
 +
# [[SimpleCPU | Simple CPU Model]]
 +
# [[O3CPU | Out-of-Order CPU Model]]
 +
# [[InOrder | In Order CPU Model]]
 +
# [[TraceCPU | Trace CPU Model ]]
 +
# [[Adding a New CPU Model]]
  
 
== ISA Implementations ==
 
== ISA Implementations ==
# [[Multiple ISA Support]]
+
# [[Architecture Support]] -- What architectures are supported by gem5 and what features of them are implemented
 +
# [[Status Matrix]]
 
# [[ISA Parser]]
 
# [[ISA Parser]]
 
# [[Alpha Implementation]]
 
# [[Alpha Implementation]]
Line 50: Line 98:
 
# [[SPARC Implementation]]
 
# [[SPARC Implementation]]
 
# [[X86 Implementation]]
 
# [[X86 Implementation]]
 +
# [[Defining ISAs]]

Latest revision as of 01:22, 28 November 2016

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.

For an overview, we have posted slides and most importantly video of a tutorial at HiPEAC Computer Systems Week. See Tutorials.

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.
  5. Full System and Benchmark Files - Disk images for operating system and benchmark applications, and how to install them.
  6. gem5 101 - Six part course covering all the basics of gem5 (and some advanced material too).

Running gem5

  1. Running gem5 - Starting a simulation from the command line.
  2. Output Files - Output obtained from simulation
  3. Checkpoints, Fast Forwarding - How to create Checkpoints, restore the checkpointed state, fast forward simulation.
  4. Regression Tests - Running the regression tests.
  5. SimObjects - What SimObjects are and how they work.
  6. Configuration / Simulation Scripts - Explains how to configure the simulator and run simulations
  7. Visualization -- Tools to help visualize what is going on in a system

Workloads

  1. Compiling - How to compile workloads to run within gem5.
  2. Multi-programmed - Multiprogrammed workloads in SE mode.
  3. Multi-threaded - 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.

Development

  1. Functional Testers
  2. Debugging - features designed specifically to help you figure out what's going on.
  3. Coding Style
  4. Adding Functionality
  5. Source Code Documentation
  6. Submitting Contributions

Infrastructure

  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, crossbar-based memory system
  3. Ruby - Description of our detailed and flexible memory system. Lots of information here.

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. Trace CPU Model
  5. Adding a New CPU Model

ISA Implementations

  1. Architecture Support -- What architectures are supported by gem5 and what features of them are implemented
  2. Status Matrix
  3. ISA Parser
  4. Alpha Implementation
  5. ARM Implementation
  6. MIPS Implementation
  7. Power Implementation
  8. SPARC Implementation
  9. X86 Implementation
  10. Defining ISAs