You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For close page policy at line 194~238 in CommandQueue.cpp.
Let's say refresh_waiting is true now and bank 0 is idle, but bank 1 is active with a CAS not issued.
Currently when the code sees bank 0 and check its nextActivate against current clock cycle (line 233), and just kept waiting till currentClockCycle>=nextActivate.
But in the meantime, it could totally issue the CAS in bank 1 as long as it's issuable, but current code prevents moving on to another command queue. Therefore some cycles are wasted here.
Therefore the produced command trace will look like:
The nextActive here is actually the timing for precharge to finish. So in short, the issue here is that the command queue block-waits for one bank to finish precharge even though it can issue CAS command while waiting.
For close page policy at line 194~238 in CommandQueue.cpp.
Let's say refresh_waiting is true now and bank 0 is idle, but bank 1 is active with a CAS not issued.
Currently when the code sees bank 0 and check its nextActivate against current clock cycle (line 233), and just kept waiting till currentClockCycle>=nextActivate.
But in the meantime, it could totally issue the CAS in bank 1 as long as it's issuable, but current code prevents moving on to another command queue. Therefore some cycles are wasted here.
Therefore the produced command trace will look like:
The reads are separated at every 15 cycles even though they could be issued at every 4 cycles.
But after all it's NOT timing violation but instead just inefficient scheduling.
The text was updated successfully, but these errors were encountered: