On Wed, 8 Jun 2011, reena panda wrote:
Hi Nilay,
Thanks for your reply. I tried deleting the MSHR allocated for the prefetch
request in case of a write back to the same address. I tried running the
benchmark again for which I was observing this assertion failure, and with
this patch, that condition is not asserted as of now. But can you point out
if the code can give break some other condition or is not doing the right
thing or should be included in some other function?
Following is the patch for the cache/cache_impl.hh file.
$ diff cache_impl.hh cache_impl_prefetch.hh
392a393,416
//Trying to fix prefetch issue
if(prefetcher) {
Addr temp_blk_addr = blockAlign(pkt->getAddr());
DPRINTF(Prefetch_Issue,"In access::writeback case,
temp_blk_addr = %#x\n",temp_blk_addr);
MSHR *temp_mshr = mshrQueue.findMatch(temp_blk_addr);
if (temp_mshr && !(temp_mshr->inService)) {
if(temp_mshr->hasTargets())
{
PacketPtr temp_tgt_pkt = temp_mshr->getTarget()->pkt;
if(temp_tgt_pkt->cmd == MemCmd::HardPFReq) {
DPRINTF(Prefetch_Issue,"A prior prefetched req to
block addr %#x exists\n", temp_mshr->addr);
temp_mshr->popTarget();
if(!temp_mshr->hasTargets()) {
MSHRQueue* temp_mq = temp_mshr->queue;
temp_mq->deallocate(temp_mshr);
}
}
}
}
}
//Trying to fix prefetch issue
Thanks,
Reena
I am not at all versed with cache_impl.hh and the prefetcher code. So, I
would not able to help you with this.
--
Nilay
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users