CMU-SAFARI/ramulator

Wrong timing calculation in Ramulator

Closed this issue · 1 comments

It seems that Ramulator does wrong timing calculation.

For instance, nFAW and n32AW (in GDDR5) must be counted after 4 and 32 row activations in the rank, respectively (If I understand timing values correctly).

After first 4 and 32 row activation, Ramulator counts nFAW and n32AW correctly. Below shows example:
ACT - RRD - ACT - RRD - ACT - RRD - ACT - nFAW (after 4 row activations) - ...
ACT - RRD - ACT - RRD - ACT - RRD - ACT - RRD - ACT - ... - n32AW (after 32 row activations) - ...

However, after 4 and 32 row activations, it continues to count nFAW and n32AW, which must occur every 4 and 32 row activations. Below shows example that Ramulator generates wrong result:

Correct example: ACT - RRD - ACT - RRD - ACT - RRD - ACT - nFAW - ACT - RRD - ACT - RRD - ...

Wrong example(nFAW) (Ramulator does): ACT - RRD - ACT - RRD - ACT - RRD - ACT - nFAW - ACT - nFAW - ACT - nFAW - ...

Wrong example(n32AW) (Ramulator does): ACT - RRD - ACT - RRD - ... - ACT - n32AW - ACT - n 32AW - ACT - n32AW - ... -

If nFAW and n32AW has to occur every 4 and 32 row activations, Ramulator generates wrong result.

Is this wrong behavior?

The related source code can be seen 'update_timing()' (Especially, 'prev' list)

I misunderstood the source code, so I closed the issue