mem: Fix event scheduling issue for prefetches
authorMitch Hayenga <mitch.hayenga@arm.com>
Tue, 23 Dec 2014 14:31:18 +0000 (09:31 -0500)
committerMitch Hayenga <mitch.hayenga@arm.com>
Tue, 23 Dec 2014 14:31:18 +0000 (09:31 -0500)
commitbd4f901c778e9e3180a60b71a5680eb6724fd637
tree059ddcc960962d505bf7ab95c9c52093ba0c05e3
parent4acd4a205525a79555f783767ab0d6a5f9c31eb5
mem: Fix event scheduling issue for prefetches

The cache's MemSidePacketQueue schedules a sendEvent based upon
nextMSHRReadyTime() which is the time when the next MSHR is ready or whenever
a future prefetch is ready.  However, a prefetch being ready does not guarentee
that it can obtain an MSHR.  So, when all MSHRs are full,
the simulation ends up unnecessiciarly scheduling a sendEvent every picosecond
until an MSHR is finally freed and the prefetch can happen.

This patch fixes this by not signaling the prefetch ready time if the prefetch
could not be generated.  The event is rescheduled as soon as a MSHR becomes
available.
src/mem/cache/cache_impl.hh