From d5ac1cb51f2e08531794e1dcbb17e47f51041c4f Mon Sep 17 00:00:00 2001 From: Ron Dreslinski Date: Tue, 15 Aug 2006 16:21:46 -0400 Subject: Pulled out changes to fix EIO programs with caches. Also fixes any translatingPort read/write Blob function problems with caches. -Basically removed the ASID from places it is no longer needed due to PageTable src/mem/cache/cache.hh: src/mem/cache/cache_impl.hh: src/mem/cache/miss/blocking_buffer.cc: src/mem/cache/miss/blocking_buffer.hh: src/mem/cache/miss/miss_queue.cc: src/mem/cache/miss/miss_queue.hh: src/mem/cache/miss/mshr.cc: src/mem/cache/miss/mshr.hh: src/mem/cache/miss/mshr_queue.cc: src/mem/cache/miss/mshr_queue.hh: src/mem/cache/prefetch/base_prefetcher.cc: src/mem/cache/prefetch/base_prefetcher.hh: src/mem/cache/tags/fa_lru.cc: src/mem/cache/tags/fa_lru.hh: src/mem/cache/tags/iic.cc: src/mem/cache/tags/iic.hh: src/mem/cache/tags/lru.cc: src/mem/cache/tags/lru.hh: src/mem/cache/tags/split.cc: src/mem/cache/tags/split.hh: src/mem/cache/tags/split_lifo.cc: src/mem/cache/tags/split_lifo.hh: src/mem/cache/tags/split_lru.cc: src/mem/cache/tags/split_lru.hh: Remove asid where it wasn't neccesary anymore due to Page Table --HG-- extra : convert_revision : ab8bbf4cc47b9eaefa9cdfa790881a21d0e7bf28 --- src/mem/cache/tags/lru.cc | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'src/mem/cache/tags/lru.cc') diff --git a/src/mem/cache/tags/lru.cc b/src/mem/cache/tags/lru.cc index 556025a3a..976bbeff2 100644 --- a/src/mem/cache/tags/lru.cc +++ b/src/mem/cache/tags/lru.cc @@ -43,7 +43,7 @@ using namespace std; LRUBlk* -CacheSet::findBlk(int asid, Addr tag) const +CacheSet::findBlk(Addr tag) const { for (int i = 0; i < assoc; ++i) { if (blks[i]->tag == tag && blks[i]->isValid()) { @@ -135,7 +135,6 @@ LRU::LRU(int _numSets, int _blkSize, int _assoc, int _hit_latency) : // table; won't matter because the block is invalid blk->tag = j; blk->whenReady = 0; - blk->asid = -1; blk->isTouched = false; blk->size = blkSize; sets[i].blks[j]=blk; @@ -153,23 +152,23 @@ LRU::~LRU() // probe cache for presence of given block. bool -LRU::probe(int asid, Addr addr) const +LRU::probe(Addr addr) const { // return(findBlock(Read, addr, asid) != 0); Addr tag = extractTag(addr); unsigned myset = extractSet(addr); - LRUBlk *blk = sets[myset].findBlk(asid, tag); + LRUBlk *blk = sets[myset].findBlk(tag); return (blk != NULL); // true if in cache } LRUBlk* -LRU::findBlock(Addr addr, int asid, int &lat) +LRU::findBlock(Addr addr, int &lat) { Addr tag = extractTag(addr); unsigned set = extractSet(addr); - LRUBlk *blk = sets[set].findBlk(asid, tag); + LRUBlk *blk = sets[set].findBlk(tag); lat = hitLatency; if (blk != NULL) { // move this block to head of the MRU list @@ -188,11 +187,10 @@ LRUBlk* LRU::findBlock(Packet * &pkt, int &lat) { Addr addr = pkt->getAddr(); - int asid = 0;//pkt->req->getAsid(); Addr tag = extractTag(addr); unsigned set = extractSet(addr); - LRUBlk *blk = sets[set].findBlk(asid, tag); + LRUBlk *blk = sets[set].findBlk(tag); lat = hitLatency; if (blk != NULL) { // move this block to head of the MRU list @@ -208,11 +206,11 @@ LRU::findBlock(Packet * &pkt, int &lat) } LRUBlk* -LRU::findBlock(Addr addr, int asid) const +LRU::findBlock(Addr addr) const { Addr tag = extractTag(addr); unsigned set = extractSet(addr); - LRUBlk *blk = sets[set].findBlk(asid, tag); + LRUBlk *blk = sets[set].findBlk(tag); return blk; } @@ -242,9 +240,9 @@ LRU::findReplacement(Packet * &pkt, PacketList &writebacks, } void -LRU::invalidateBlk(int asid, Addr addr) +LRU::invalidateBlk(Addr addr) { - LRUBlk *blk = findBlock(addr, asid); + LRUBlk *blk = findBlock(addr); if (blk) { blk->status = 0; blk->isTouched = false; @@ -253,13 +251,13 @@ LRU::invalidateBlk(int asid, Addr addr) } void -LRU::doCopy(Addr source, Addr dest, int asid, PacketList &writebacks) +LRU::doCopy(Addr source, Addr dest, PacketList &writebacks) { assert(source == blkAlign(source)); assert(dest == blkAlign(dest)); - LRUBlk *source_blk = findBlock(source, asid); + LRUBlk *source_blk = findBlock(source); assert(source_blk); - LRUBlk *dest_blk = findBlock(dest, asid); + LRUBlk *dest_blk = findBlock(dest); if (dest_blk == NULL) { // Need to do a replacement Request *search = new Request(dest,1,0); @@ -285,7 +283,6 @@ LRU::doCopy(Addr source, Addr dest, int asid, PacketList &writebacks) writebacks.push_back(writeback); } dest_blk->tag = extractTag(dest); - dest_blk->asid = asid; delete search; delete pkt; } -- cgit v1.2.3