Retro prof in the lab University of Washington Computer Science & Engineering
 CSE 378 Winter 2010
  CSE Home   About Us    Search    Contact Info 

 Home
Administrative
 Academic Misconduct
 Syllabus
Homework
 Homework 0 "Due" 1/13
 HW 1 Due 1/22
 HW 2 Due 2/5
 HW 3 Due 3/1
Labs
 Lab 1 SW Due 1/29
 Lab 1 HW Due 1/29
 Lab 2 SW Due 2/16
 Lab 2 HW Due 2/16
 Lab 3 Due 2/26
Resources
 Lectures
 Exams
 Wiki
 Lab Info
 Green Sheet (PDF)
 Green Sheet Magic
 MIPS Resources
Communications
 Discussion Board
 Mail List Archives
 Turnin
 GradeBook
   

Inferring Cache Geometries

Chip D. Signer, Ph.D, is trying to reverse engineer a competitor's microprocessors to discover their cache geometries. Instead of running programs on these processors and inferring the cache layout from timing results, we will approximate his work by using a simulator.

Specifically, each of these "processors" is provided as an object file (.o file) against which you will link your code. See the file mystery-cache.h for documentation of the function interface that these object files export. Your job is to fill in the function stubs in cache-test-skel.c which, when linked with one of these cache object files, will determine and then output the cache size, associativity, and block size. Some of the provided object files are named with this information (e.g. cache_64c_2a_16b.o is a 64 KB capacity, 2-way set-associative cache with 16B blocks) to help you check your work. There are also 3 mystery cache object files, whose parameters you must discover on your own.

You can assume that the mystery caches have sizes that are powers of 2. You cannot assume anything else about the cache parameters except what you can infer from the cache size. Finally, the mystery caches are all pretty realistic in their geometries, so use this fact to sanity check your results.

You will need to complete this assignment on a Linux machine with the C standard libraries (e.g. attu). All the files you need are in hw3.tar.gz. To extract the files from this archive, simply use the command:

tar xzf hw3.tar.gz

and the files will be extracted into a new subdirectory of the current directory named hw3. The provided Makefile includes a target cache-test. To use it, set TEST_CACHE to the object file to link against on the command line - i.e. from within the hw3 directory run the command:

make cache-test TEST_CACHE=cache_64c_2a_16b.o

This will create an executable cache-test that will run your cache-inference code against the supplied cache object. Run this executable like so:

./cache-test

and it will print the results to the screen.

What you need to do

You should fill in the 3 functions in cache-test-skel.c which have /* YOUR CODE GOES HERE */ comments in them.

Additionally, determine the geometry of each of the three mystery caches and list these in a comment at the top of your modified cache-test-skel.c.

Turning in the assignment

For this assignment, submit your modified version of cache-test-skel.c via the Catalyst dropbox linked to the main course page. The assignment is due by 5pm on Monday, March 1st.


CSE logo Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to Francis]