Difference between revisions of "Google Summer of Code"
(→Other) |
(→Direct Execution model) |
||
Line 10: | Line 10: | ||
==== Direct Execution model==== | ==== Direct Execution model==== | ||
− | + | Direct execution is a well known technique for speeding up simulation employed by a number of simulators. A direct execution simulator uses the native machine to execute guest instructions without interpretation. Methods of direct execution include: static code instrumentation, dynamic code instrumentation, full OS virtualization, and application virtualization. There are several mechanisms for implementing direct execution with different pros and cons. | |
+ | # The Linux Kernel Virtual Machine | ||
+ | #* PRO: Could be brought up quickly and can leverage an existing virtualization system | ||
+ | #* CON: Can only be used for fast forward since instructions cannot be trapped | ||
#* http://kvm.qumranet.com/kvmwiki | #* http://kvm.qumranet.com/kvmwiki | ||
+ | # PIN based application virtualization | ||
+ | #* PRO: Capable of dynamic instrumentation, so can be used for real simulation | ||
+ | #* CON: May be difficult or impossible to use for full-system simulation | ||
+ | #* http://rogue.colorado.edu/Wikipin/index.php/Main_Page | ||
+ | # Custom implementation | ||
+ | #* PRO: Can do exactly what we want | ||
+ | #* CON: Significant effort | ||
====Parallelization==== | ====Parallelization==== |
Revision as of 22:36, 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
Direct execution is a well known technique for speeding up simulation employed by a number of simulators. A direct execution simulator uses the native machine to execute guest instructions without interpretation. Methods of direct execution include: static code instrumentation, dynamic code instrumentation, full OS virtualization, and application virtualization. There are several mechanisms for implementing direct execution with different pros and cons.
- The Linux Kernel Virtual Machine
- PRO: Could be brought up quickly and can leverage an existing virtualization system
- CON: Can only be used for fast forward since instructions cannot be trapped
- http://kvm.qumranet.com/kvmwiki
- PIN based application virtualization
- PRO: Capable of dynamic instrumentation, so can be used for real simulation
- CON: May be difficult or impossible to use for full-system simulation
- http://rogue.colorado.edu/Wikipin/index.php/Main_Page
- Custom implementation
- PRO: Can do exactly what we want
- CON: Significant effort
Parallelization
- 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
- Memory network models
- (e.g. Crossbar or Mesh)
Directory Coherence Protocol
- Directory Protocol
Detailed In-Order core model
- Real In-order core model
- 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.
Sampling/fast-forwarding techniques
- 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
- 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 Information
The most successful project is one that is going to be interesting to you. We've got some suggested projects above, but the suggestions are just that. If there is something related that you would rather do please put that in your proposal.
Please describe who you are and what you've done in your application. In particular we would like to know about other projects you've worked on and your familiarity with Python and C++. The M5 code base tends to exercise most of the C++ standard (and the non-standard). A good familiarity with C++ and object oriented programming is necessary for a successful M5 project.
Additionally, we would like to see a set of goals/milestones in your proposal. We don't expect the list to be etched in stone, however stepping back and figuring out how you're planning to get from point A to point B is a good way for your and your mentors to track your progress and evaluate the how reasonably your goals are. Finally, we expect that working on M5 would be your main summer activity.
Mentors / M5 Simulation Team
- Steve Reinhardt - Simulator Infrastructure; Parallel Simulation; ISA description; Full System Simulation; Memory Modeling
- Nate Binkert - Simulator Infrastructure; Parallel Simulation; Python Integration; Full System 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); Full System Simulation
- Korey Sewell - ISA description (MIPS); Out-of-Order CPU Modeling; SMT Simulation
- Ron Dreslinski - Memory Modeling