Difference between revisions of "Google Summer of Code"

From gem5
Jump to: navigation, search
(Mentors / M5 Simulation Team)
Line 1: Line 1:
=== Introduction ===
+
== 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 [http://code.google.com/summerofcode.html Google Summer of Code (SoC) website].
+
The [http://code.google.com/summerofcode.html Google Summer of Code (SoC)] is a great opportunity for students to contribute to open source software projects. The open source projects get additional contributions and active developers while the students get some money and gain experience in large distributed software development.  
  
 +
==About M5==
 +
M5 is a modular platform for computer system architecture research, encompassing system-level architecture as well as processor microarchitecture. At its core M5 provides a generic, object-oriented discrete-event simulation framework. This includes a foundation for: defining, parameterizing, configuring, and marshaling simulation objects. The foundation along with various pre-made object models allow M5 simulate both single systems and multiple networked systems deterministically. Simulations can be run using one binary (syscall emulation) or booting an entire operating system such as Linux or Solaris (full-system) on most major ISAs (SPARC, MIPS, ALPHA, ARM, x86/64). The simulator is written in a combination of C++ and Python and is pervasively object oriented. Python is used for configuration and not-performance critical parts, while C++ is used for the core of the simulation framework.  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.
  
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.
 
  
 +
== Project Ideas ==
 +
Below is a list of possible project ideas and starting points, however we're open to other ideas students may have.  All the ideas listed here will require some familiarity with Python and a good grasp of advanced C++ concepts.
  
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!
+
=== Direct Execution model===
 
 
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.
 
 
 
 
# Build a direct execution CPU model based on the Linux Kernel Virtual Machine
 
# Build a direct execution CPU model based on the Linux Kernel Virtual Machine
 
#* http://kvm.qumranet.com/kvmwiki
 
#* http://kvm.qumranet.com/kvmwiki
 +
 +
===Parallelization===
 
# Parallelize M5
 
# Parallelize M5
 
#* Use the Wisconsin Wind Tunnel as a guide
 
#* 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.  
 
#* 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.  
 +
 +
===Memory Network Models===
 
#Memory network models
 
#Memory network models
 
#* (e.g. Crossbar or Mesh)
 
#* (e.g. Crossbar or Mesh)
 +
 +
===Directory Coherence Protocol===
 
# Directory Protocol
 
# Directory Protocol
 +
 +
===Detailed In-Order core model===
 
# Real In-order core model
 
# Real In-order core model
 
#* There is code to start with but nothing that is fully fleshed out.
 
#* There is code to start with but nothing that is fully fleshed out.
 +
 +
===Interface to an HDL===
 
# Write a PLI interface to connect Verilog CPUs to the memory system.
 
# Write a PLI interface to connect Verilog CPUs to the memory system.
 +
 +
===Sampling/fast-forwarding techniques===
 
# Sampling/fast-forwarding techniques
 
# Sampling/fast-forwarding techniques
 
#* This would have the most impact if it was coupled with (1)
 
#* This would have the most impact if it was coupled with (1)
 
#* Using SMARTS work would be a good guide
 
#* Using SMARTS work would be a good guide
 +
 +
===Other device models===
 
# Flash memory device model (seems popular nowadays)
 
# 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.
 
#* 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 ===
+
==Other ==
 +
 
 +
 
 
Here is some idea of how we would expect the project to be carried out:
 
Here is some idea of how we would expect the project to be carried out:
  
Line 43: Line 54:
 
* ??????????
 
* ??????????
  
=== Mentors / M5 Simulation Team ===
+
==Mentors / M5 Simulation Team==
* Steve Reinhardt  - Simulator Infrastructure; Parallel Simulation; ISA description; Full System Simulation; Memory Modeling
+
* Steve Reinhardt  - Simulator Infrastructure; ISA description; Full System Simulation; Memory Modeling
* Nate Binkert - Simulator Infrastructure; Parallel Simulation; Python Integration; Full System Simulation; Networking Models; Configuration Scripts
+
* Nate Binkert - Parallel Simulation; Networking Models; Configuration Scripts
 
* Ali Saidi - Networking Models; Device Modeling; Full System Simulation; Memory Modeling not including caches
 
* Ali Saidi - Networking Models; Device Modeling; Full System Simulation; Memory Modeling not including caches
 
* Lisa Hsu - Full System Workloads; Memory Modeling; Checkpointing Simulations
 
* Lisa Hsu - Full System Workloads; Memory Modeling; Checkpointing Simulations
 
* Kevin Lim - CPU Modeling (Out-of-Order, SimpleCPU) ; Full-System Simulation;  
 
* Kevin Lim - CPU Modeling (Out-of-Order, SimpleCPU) ; Full-System Simulation;  
* Gabe Black  - ISA description (SPARC, x86); 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
 
* Korey Sewell  - ISA description (MIPS); Out-of-Order CPU Modeling; SMT Simulation
 
* Ron Dreslinski - Memory Modeling
 
* Ron Dreslinski - Memory Modeling

Revision as of 22:12, 11 March 2008

Introduction

The Google Summer of Code (SoC) is a great opportunity for students to contribute to open source software projects. The open source projects get additional contributions and active developers while the students get some money and gain experience in large distributed software development.

About M5

M5 is a modular platform for computer system architecture research, encompassing system-level architecture as well as processor microarchitecture. At its core M5 provides a generic, object-oriented discrete-event simulation framework. This includes a foundation for: defining, parameterizing, configuring, and marshaling simulation objects. The foundation along with various pre-made object models allow M5 simulate both single systems and multiple networked systems deterministically. Simulations can be run using one binary (syscall emulation) or booting an entire operating system such as Linux or Solaris (full-system) on most major ISAs (SPARC, MIPS, ALPHA, ARM, x86/64). The simulator is written in a combination of C++ and Python and is pervasively object oriented. Python is used for configuration and not-performance critical parts, while C++ is used for the core of the simulation framework. 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.


Project Ideas

Below is a list of possible project ideas and starting points, however we're open to other ideas students may have. All the ideas listed here will require some familiarity with Python and a good grasp of advanced C++ concepts.

Direct Execution model

  1. Build a direct execution CPU model based on the Linux Kernel Virtual Machine

Parallelization

  1. 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.

Memory Network Models

  1. Memory network models
    • (e.g. Crossbar or Mesh)

Directory Coherence Protocol

  1. Directory Protocol

Detailed In-Order core model

  1. Real In-order core model
    • There is code to start with but nothing that is fully fleshed out.

Interface to an HDL

  1. Write a PLI interface to connect Verilog CPUs to the memory system.

Sampling/fast-forwarding techniques

  1. Sampling/fast-forwarding techniques
    • This would have the most impact if it was coupled with (1)
    • Using SMARTS work would be a good guide

Other device models

  1. 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.

Other

Here is some idea of how we would expect the project to be carried out:

  • Make M5 your main summer activity and set milestones for your project. This will assist the mentors and yourself in tracking your progress and will allow you to schedule breaks from your summer software development accordingly.
  • Use the M5 Mailing Lists so that you can keep your work open and into the community. Asking a question or posting a response to the list allows for everyone to be involved in solving problems and developing quality software quickly.
  •  ??????????
  •  ??????????

Mentors / M5 Simulation Team

  • Steve Reinhardt - Simulator Infrastructure; ISA description; Full System Simulation; Memory Modeling
  • Nate Binkert - Parallel Simulation; Networking Models; Configuration Scripts
  • Ali Saidi - Networking Models; Device Modeling; Full System Simulation; Memory Modeling not including caches
  • 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