Wrong timing calculation in Ramulator
allencho1222 opened 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