Georgia Institute of Technology

CS4290/CS6290/ECE4100/ECE6100

Programming assignment #4
Progm due: Nov. 18 (Sun) 6:00 pm T-square (+5:55 grace period)
Prof. Hyesoon Kim
Prof. Moinuddin Qureshi


This is an individual assignment. You can discuss this assignment with other classmates but you should do your assignment individually.


Part 1 (80 points) Simulator
Overview
In this assignment, you will extend your simulator to support fine-grained MT.

We need multiple steps to support the MT feature. Adding MT feature requires modifications in multiple places in the simulator. Additional data structures must be added. add_me4.txt file and lab4.tar.gz (contains only knobs for the time being) are provided

First, you need to make the simulator run correctly right after you add add_me4.txt file. add_me4.txt file changes get_op function and adds thread_id into op_struct, additional knobs and modify stat prints. You need to convert your stat data structures to be arrays. (Note: use HW_MAX_THREAD to convert a scalar variable to an array variable. i.e.) dcache_miss_count --> dcache_miss_count[HW_MAX_THREAD]. The difference between HW_MAX_THREAD and KNOB_RUN_THREAD_NUM is that HW_MAX_THREAD is the maximum number of threads that the hardware can support and KNOB_THREAD_NUM is the number of running threads at a given time. The hardware can support 4 threads but a user can decide to run 1 ~ 4 threads. )
Because now the system handles multiple traces, before you add MT feature, you need to make it sure that your simulator still runs one thread just like before and then you add features to support multi traces.

In a real architecture simulator, simulation ending condition should be more sophisticated. However, in this assignment, we do not change the ending conditions. Therefore, simulator reads from only remaining traces until all the traces are finished. max_inst_count is based on the sum of all threads.

  • Fetch Stage
  • Decode Stage
  • Memory
  • WB
  • Stats
  • Knobs related to this assignment