Computer Sciences Dept.

CS/ECE 757 Advanced Computer Architecture II Spring 2005 Section 1
Instructor Mark D. Hill and T. A. Bhavesh Mehta
URL: http://www.cs.wisc.edu/~markhill/cs757/Spring2005/

Homework 2 // Due at Lecture Mon Mar 7

You should do this assignment alone. No late assignments.


Simulation is one of the most important research and development methods in computer architecture. You can download Gems software(modules containing ruby and opal) from Gems website. Extract it into a directory $GEMS. Then download a copy of simics from simics tarball. Look at Gems documentation to setup your GEMS environment. Make sure your simulator is up and running by Feb 28. The goal of this assignment is to give you a chance to feel how simulation works, how to use a typical simulator and to get a first-hand feeling about simulation accuracy.

For additional documentation you can look at SimICS, a system level simulator from Virtutech, as well as Ruby, a cycle-accurate cache simulator from Multifacet research group here at UW-Madison.

Have fun and good luck!

Before you proceed, please carefully read the Simics tutorial and the Ruby tutorial.



Assignment:

In this assignment, you will modify your shared memory matrix multiply program from homework 1, and study it in depth with a simulator. Let one matrix multiply be called a transaction. Modify your program so that it performs many matrix multiplies (i.e., many transactions). Matrices should be of a fixed sizes but contain data values pseudo-randomly initialized as part of the matrix multiply transaction. Repeatingly performing matrix multiplies will allow you to study a workload in steady state.

(A) Create five different checkpoints that contain a running matrix multiply program that is in steady state (not in initialization or in finishing stage) for systems that have 1, 2, 4, 8, and 16 processors in Simics. Make sure you have properly divided your program into transactions and magic instructions have been properly planted to inform the simulator about the completion for each transaction.

(B) Simulate the matrix multiply program on each system for the same number of transactions. You can simulate any number of transactions you feel comfortable, but try not to simulate too short amount of time for the performance comparison to be meaningful. Collect the cycle number from Simics and plot the scalability curve from 1p to 16p.

(C) Build the Ruby module with the default configuration for the two snooping protocols given (MOSI_bcast_opt and MOSI_directory_opt_blocking_2level). Simulate the matrix multiply program on each system with Ruby enabled. Collect cycle count from Ruby. Plot the scalability curves for the two snooping protocols. Compare and discuss your results from (B) and (C).



Handin and grading Criteria:

Handin your hardcopy of the results you get in class on the due date. Your work will be graded based on how well you can use the simulator that is demonstrated by your results.


Related Links:

  • A sample usage of simulation in Computer Architecture R&D (from ECE902'Fall-1999) :
    Characterizing a Java Implementation of TPC-W
    Note: this is just for your reference to see how simulation is used, don't try to do it in your assignment.

 
Computer Sciences | UW Home