diff -r eeddad2f38d9 -r e254040a4aa0 src/mem/simple_dram.cc --- a/src/mem/simple_dram.cc Wed Oct 16 08:32:34 2013 +0100 +++ b/src/mem/simple_dram.cc Wed Oct 16 08:32:50 2013 +0100 @@ -957,13 +957,19 @@ // but do care about bank being free for access rowHitFlag = true; - if (bank.freeAt < inTime) { + // When a series of requests arrive to the same row, + // DDR systems are capable of streaming data continuously + // at maximum bandwidth (subject to tCCD). Here, we approximate + // this condition, and assume that if whenever a bank is already + // busy and a new request comes in, it can be completed with no + // penalty beyond waiting for the existing read to complete. + if (bank.freeAt > inTime) { + accLat += bank.freeAt - inTime; + bankLat += tBURST; + } else { // CAS latency only accLat += tCL; bankLat += tCL; - } else { - accLat += 0; - bankLat += 0; } } else {