FAQs (Student Resources)
This is a list of common issues students encounter when using the simulator. Don't expect a nice response from me if you ask about something that you could have easily found out yourself on your own. You should be able to read code to some extent. Try "../sim-outorder -rf:size 1 gcc.arg" the problem is obvious, and if you ask me about it, I won't forget who you are.
No IPC Results
Scroll up. Don't ever ask this question, it makes it apparent that you aren't trying.
Not Enough Architectural Registers
For X threads, -rf:size must be at least (32*(1+X)).
Not Enough Architectural Registers (CMP)
At runtime, unless specified, the simulator allocates architectural registers such that if all of the threads were moved to that core there would be enough architectural registers. This can be solved by limiting the number of contexts allowed on a core: -max_contexts_per_core #
Error, Div by Zero in Statistics
This is usually not an error. Division by zero happens... sort of.
No Insts Committed in a Long Time
You broke it. Something happened such that the head of the ROB was unable to commit. However, being unable to commit could mean that it never was able to be issued. You can either use a debugger, use debug code, or fix your code.
Received OSF_SYS_EXIT, OSF_SYS_EXITGROUP, OSF_SYS_KILL
A benchmark ran to completion, or it aborted itself. These benchmarks run for at least 100 billion insts (most of them... some into the trillions), so this doesn't often occur during simple test runs. Missing files can result in a program terminating early.
This error is misleading, this is a memory allocation problem. See "man malloc" and use MALLOC_CHECK_ to enforce hash boundary checks. If that doesn't work... it is going to be a lot of debugging to fix this. A later revision of M-Sim_v3.0 will enforce the use of MALLOC_CHECK at the code level.
Invalid Replacement Policy
You probably used 1 instead of l, or vice versa.
RS_Links are a throwback to Reservation Stations. In case of M-Sim, they point to ROB or LSQ entries and maintain an additional piece of data (sequence number, when ready or opnum).
ROB_entry can represent an ROB or an LSQ entry. This is very important.