diff options
author | Ron Dreslinski <rdreslin@umich.edu> | 2006-07-10 17:19:54 -0400 |
---|---|---|
committer | Ron Dreslinski <rdreslin@umich.edu> | 2006-07-10 17:19:54 -0400 |
commit | ad4374e0cd235ea98ddc2a4659f9d7c86e5b355b (patch) | |
tree | 5f7cdb6598305794449a0251266cb0440e22b6fa | |
parent | 185a5502b7fb1bf46a1582749aeadb730106b4fb (diff) | |
parent | 6592045cbc138306474d24d60daa222a07673fe2 (diff) | |
download | gem5-ad4374e0cd235ea98ddc2a4659f9d7c86e5b355b.tar.xz |
Merge zizzer:/z/m5/Bitkeeper/newmem
into zizzer.eecs.umich.edu:/.automount/zazzer/z/rdreslin/m5bk/newmem
--HG--
extra : convert_revision : c811eb9eacc480b14862f8074af80c56ec1e07f1
-rw-r--r-- | src/mem/cache/base_cache.cc | 17 | ||||
-rw-r--r-- | src/mem/cache/miss/miss_queue.cc | 8 | ||||
-rw-r--r-- | src/mem/cache/miss/mshr.cc | 1 |
3 files changed, 20 insertions, 6 deletions
diff --git a/src/mem/cache/base_cache.cc b/src/mem/cache/base_cache.cc index be9769fdc..451da28e8 100644 --- a/src/mem/cache/base_cache.cc +++ b/src/mem/cache/base_cache.cc @@ -117,11 +117,24 @@ BaseCache::CacheEvent::process() if (!pkt) { if (!cachePort->isCpuSide) + { pkt = cachePort->cache->getPacket(); + bool success = cachePort->sendTiming(pkt); + DPRINTF(Cache, "Address %x was %s in sending the timing request\n", + pkt->getAddr(), success ? "succesful" : "unsuccesful"); + cachePort->cache->sendResult(pkt, success); + if (success && cachePort->cache->doMasterRequest()) + { + //Still more to issue, rerequest in 1 cycle + pkt = NULL; + this->schedule(curTick+1); + } + } else + { pkt = cachePort->cache->getCoherencePacket(); - bool success = cachePort->sendTiming(pkt); - cachePort->cache->sendResult(pkt, success); + cachePort->sendTiming(pkt); + } return; } //Know the packet to send, no need to mark in service (must succed) diff --git a/src/mem/cache/miss/miss_queue.cc b/src/mem/cache/miss/miss_queue.cc index da0448ad3..4a3dc1062 100644 --- a/src/mem/cache/miss/miss_queue.cc +++ b/src/mem/cache/miss/miss_queue.cc @@ -352,7 +352,7 @@ MissQueue::setPrefetcher(BasePrefetcher *_prefetcher) MSHR* MissQueue::allocateMiss(Packet * &pkt, int size, Tick time) { - MSHR* mshr = mq.allocate(pkt, size); + MSHR* mshr = mq.allocate(pkt, blkSize); mshr->order = order++; if (!pkt->req->isUncacheable() ){//&& !pkt->isNoAllocate()) { // Mark this as a cache line fill @@ -372,7 +372,7 @@ MissQueue::allocateMiss(Packet * &pkt, int size, Tick time) MSHR* MissQueue::allocateWrite(Packet * &pkt, int size, Tick time) { - MSHR* mshr = wb.allocate(pkt,pkt->getSize()); + MSHR* mshr = wb.allocate(pkt,blkSize); mshr->order = order++; //REMOVING COMPRESSION FOR NOW @@ -446,11 +446,11 @@ MissQueue::handleMiss(Packet * &pkt, int blkSize, Tick time) /** * @todo Add write merging here. */ - mshr = allocateWrite(pkt, pkt->getSize(), time); + mshr = allocateWrite(pkt, blkSize, time); return; } - mshr = allocateMiss(pkt, size, time); + mshr = allocateMiss(pkt, blkSize, time); } MSHR* diff --git a/src/mem/cache/miss/mshr.cc b/src/mem/cache/miss/mshr.cc index 1a85d3018..db2f40c56 100644 --- a/src/mem/cache/miss/mshr.cc +++ b/src/mem/cache/miss/mshr.cc @@ -57,6 +57,7 @@ void MSHR::allocate(Packet::Command cmd, Addr _addr, int _asid, int size, Packet * &target) { + addr = _addr; if (target) { //Have a request, just use it |