Difference between revisions of "Google Summer of Code"

From gem5
Jump to: navigation, search
Line 1: Line 1:
 
All the ideas listed here will require some familiarity with Python and a good grasp of advanced C++ concepts.
 
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
 
# Parallelize M5
 
# Parallelize M5
 
#* Use the Wisconsin Wind Tunnel as a guide
 
#* Use the Wisconsin Wind Tunnel as a guide
Line 10: Line 9:
 
# Mesh network
 
# Mesh network
 
# Directory Protocol
 
# Directory Protocol
# Real F/S In-order core
+
# Real In-order core model
 
#* Kevin has one that works to some degree in SE, it doesn't have functional units yet, but it does have variable latency stages and such
 
#* Kevin has one that works to some degree in SE, it doesn't have functional units yet, but it does have variable latency stages and such
 
#* Korey has one he did at MIPS, I don't know about it's features, but it's SE only  as well
 
#* Korey has one he did at MIPS, I don't know about it's features, but it's SE only  as well
# SMT
 
#* Fix O3 bugs/ Fix ROB Units
 
#* It's a huge pile of code to understand before you get anywhere if they get that far
 
# Are there any other benchmarks we want?
 
#* That they could possible make work?
 
# Get and intergate one of the various other DRAM models people have
 
# Implement a more complete version of the Intel NIC we simulate
 
#* TSO, enforce the number of DMA engines, etc.
 
# Sampling/checkpointing/restarting
 
#* Testing, fixing, etc... Not exactly exciting work
 
 
# 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 (making sure ours works, maybe adding in some new ones)
 
# Sampling/fast-forwarding techniques (making sure ours works, maybe adding in some new ones)
# Different cache models (different replacement policies, etc.; would allow them to do some research into it, maybe get some work done for Lisa)
 
# Different prefetcher models (expand on what Ron has, also can do some research into it)
 
 
# Flash memory device model? (seems popular nowadays)
 
# Flash memory device model? (seems popular nowadays)

Revision as of 15:22, 11 March 2008

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. Crossbar network
  4. Mesh network
  5. Directory Protocol
  6. Real In-order core model
    • Kevin has one that works to some degree in SE, it doesn't have functional units yet, but it does have variable latency stages and such
    • Korey has one he did at MIPS, I don't know about it's features, but it's SE only as well
  7. Write a PLI interface to connect Verilog CPUs to the memory system.
  8. Sampling/fast-forwarding techniques (making sure ours works, maybe adding in some new ones)
  9. Flash memory device model? (seems popular nowadays)