Google Summer of Code

From gem5
Revision as of 01:48, 12 March 2008 by Ksewell (talk | contribs) (Introduction)
Jump to: navigation, search

Introduction

Google sponsors a great opportunity for students to help out Open Source software projects thrrough their Google Summer of Code program. Students contribute to the Open Source community and also get paid for their hard work. Free software projects (such as M5) now have another way to attract developers to their project and software developers have another chance to gain experience and hone their skills on a project that will benefits the community. This is especially attractive to student software developers (undergraduate or graduate) to be on the cutting edge of software development. You can find out additional details at the Google Summer of Code (SoC) website.


M5 is a modular platform for computer system architecture research, encompassing system-level architecture as well as processor microarchitecture. It's feature include but are not limited to Key feature pervasive object-oriented code orientation, multiple interchangeable CPU models, Multiple ISA compatability (SPARC,MIPS,ALPHA), event-driven memory system, full-system capability, syscall emulation, and multiprocessor / multi-system capability.


Using the M5 simulator, computer architecture researchers around the world have been able to successfully model their systems and publish their work in magazines, conferences, and academic journals. So far, the Publications list has reached more than 50 and it grows every year!

The M5 Simulation team invites any software developers interested to work on this exciting project. The Google Summer of Code is a great way to get started as it provides funding for aspiring M5 developers to create useful work under the mentorship of a M5 Simulation team member.

Apply Now (Deadline: ????)!!!!

Project Ideas

All the ideas listed here will require some familiarity with Python and a good grasp of advanced C++ concepts.

  1. Build a direct execution CPU model based on the Linux Kernel Virtual Machine
  2. Parallelize M5
    • Use the Wisconsin Wind Tunnel as a guide
    • This actually isn't as bad as it sounds as all objects schedule their own events and there are limited ways they can interact with other objects in the system.
  3. Memory network models
    • (e.g. Crossbar or Mesh)
  4. Directory Protocol
  5. Real In-order core model
    • There is code to start with but nothing that is fully fleshed out.
  6. Write a PLI interface to connect Verilog CPUs to the memory system.
  7. Sampling/fast-forwarding techniques
    • This would have the most impact if it was coupled with (1)
    • Using SMARTS work would be a good guide
  8. Flash memory device model (seems popular nowadays)
    • This could be a hard drive based model like we're seeing in laptops now or a memory device model like several research papers have suggested as storage in between DRAM and disk.

Getting Things Done

Mentors / M5 Simulation Team

  • Steve Reinhardt - Simulator Infrastructure; ISA description; Full System Simulation
  • Nate Binkert - Parallel Simulation; Networking Models; Configuration Scripts
  • Ali Saidi - Networking Models; Device Modeling; Full System Simulation
  • Lisa Hsu - Full System Workloads; Memory Modeling; Checkpointing Simulations
  • Kevin Lim - CPU Modeling (Out-of-Order, SimpleCPU) ; Full-System Simulation;
  • Gabe Black - ISA description (SPARC, x86); Simulator Infrastructure; Full System Simulation
  • Korey Sewell - ISA description (MIPS); Out-of-Order CPU Modeling; SMT Simulation
  • Ron Dreslinski - Memory Modeling