How to check correctness of your simulator
We are currently preparing a sample output. While you are waiting for samples if you can answer "yes" for all the following answers, you are mostly likely on the right track.
As you increase cache size, do you see performance improvement?
There are some outliers though.
Do you see performance improvement when you increase the rob size?
You will see a clear trend when a memory latency is reasonably long.
Do you see performance degradation when you increase KNOB_MEM_LATENCY?
Do you see performance degradation when you increase KNOB_DCACHE_LATENCY?
Do you see performance is saturated when you increase ROB, scheduler size?
Does your simulator show significant performance benefit when you enable perfect_dcache?
Do you see in order retirement debug messages for both in order scheduling and out of order scheduling when you turn on debug messages for each thread?
Do you see out of order issue debug messages for out of order scheduling when you turn on debug messages for each thread?
Do you see in order issue debug messages for in order scheduling when you turn on debug messages for each thread?
You simulator should still answer the following questions:
As you increase KNOB_GHR_LENGTH from 4 to 14, do you see performance improvement? (for a long trace)
As you increase KNOB_ISSUE_WIDTH from 1 to 3, do you see
IPC(1) << IPC(2) << IPC(3) ?
As you increase KNOB_ISSUE_WIDTH from 1 to 3, do you see
(IPC(2) - IPC(1)) > (IPC(3)-IPC(2)) ?
Do you see
IPC (inorder scheduling) < IPC (out of order scheduling) ?