Merge from head.
[gem5.git] / src / mem / cache / tags / split.cc
index 9d9036abb2936a568e1dcf0bf650af302416f36c..e22ccbb96223ea59a8f00d86d7c3d760f0a5691e 100644 (file)
@@ -253,81 +253,29 @@ Split::regStats(const string &name)
 
 // probe cache for presence of given block.
 bool
-Split::probe(int asid, Addr addr) const
+Split::probe(Addr addr) const
 {
-    bool success = lru->probe(asid, addr);
+    bool success = lru->probe(addr);
     if (!success) {
         if (lifo && lifo_net)
-            success = lifo_net->probe(asid, addr);
+            success = lifo_net->probe(addr);
         else if (lru_net)
-            success = lru_net->probe(asid, addr);
+            success = lru_net->probe(addr);
     }
 
     return success;
 }
 
-SplitBlk*
-Split::findBlock(Packet * &pkt, int &lat)
-{
-
-    Addr aligned = blkAlign(pkt->paddr);
-
-    if (memHash.count(aligned)) {
-        memHash[aligned]++;
-    } else if (pkt->nic_pkt) {
-        memHash[aligned] = 1;
-    }
-
-    SplitBlk *blk = lru->findBlock(pkt->paddr, pkt->req->asid, lat);
-    if (blk) {
-        if (pkt->nic_pkt) {
-            NR_CP_hits++;
-        } else {
-            CR_CP_hits++;
-        }
-    } else {
-        if (lifo && lifo_net) {
-            blk = lifo_net->findBlock(pkt->paddr, pkt->req->asid, lat);
-
-        } else if (lru_net) {
-            blk = lru_net->findBlock(pkt->paddr, pkt->req->asid, lat);
-        }
-        if (blk) {
-            if (pkt->nic_pkt) {
-                NR_NP_hits++;
-            } else {
-                CR_NP_hits++;
-            }
-        }
-    }
-
-    if (blk) {
-        Tick latency = curTick - blk->ts;
-        if (blk->isNIC) {
-            if (!blk->isUsed && !pkt->nic_pkt) {
-                    useByCPUCycleDist.sample(latency);
-                    nicUseByCPUCycleTotal += latency;
-                    nicBlksUsedByCPU++;
-            }
-        }
-        blk->isUsed = true;
-
-        if (pkt->nic_pkt) {
-            DPRINTF(Split, "found block in partition %d\n", blk->part);
-        }
-    }
-    return blk;
-}
 
 SplitBlk*
-Split::findBlock(Addr addr, int asid, int &lat)
+Split::findBlock(Addr addr, int &lat)
 {
-    SplitBlk *blk = lru->findBlock(addr, asid, lat);
+    SplitBlk *blk = lru->findBlock(addr, lat);
     if (!blk) {
         if (lifo && lifo_net) {
-            blk = lifo_net->findBlock(addr, asid, lat);
+            blk = lifo_net->findBlock(addr, lat);
         } else if (lru_net) {
-            blk = lru_net->findBlock(addr, asid, lat);
+            blk = lru_net->findBlock(addr, lat);
         }
     }
 
@@ -335,14 +283,14 @@ Split::findBlock(Addr addr, int asid, int &lat)
 }
 
 SplitBlk*
-Split::findBlock(Addr addr, int asid) const
+Split::findBlock(Addr addr) const
 {
-    SplitBlk *blk = lru->findBlock(addr, asid);
+    SplitBlk *blk = lru->findBlock(addr);
     if (!blk) {
         if (lifo && lifo_net) {
-            blk = lifo_net->findBlock(addr, asid);
+            blk = lifo_net->findBlock(addr);
         } else if (lru_net) {
-            blk = lru_net->findBlock(addr, asid);
+            blk = lru_net->findBlock(addr);
         }
     }
 
@@ -350,27 +298,25 @@ Split::findBlock(Addr addr, int asid) const
 }
 
 SplitBlk*
-Split::findReplacement(Packet * &pkt, PacketList* &writebacks,
-                     BlkList &compress_blocks)
+Split::findReplacement(Addr addr, PacketList &writebacks)
 {
     SplitBlk *blk;
 
-    if (pkt->nic_pkt) {
+    assert(0);
+#if 0
+    if (pkt->nic_pkt()) {
         DPRINTF(Split, "finding a replacement for nic_req\n");
         nic_repl++;
         if (lifo && lifo_net)
-            blk = lifo_net->findReplacement(pkt, writebacks,
-                                             compress_blocks);
+            blk = lifo_net->findReplacement(addr, writebacks);
         else if (lru_net)
-            blk = lru_net->findReplacement(pkt, writebacks,
-                                            compress_blocks);
+            blk = lru_net->findReplacement(addr, writebacks);
         // in this case, this is an LRU only cache, it's non partitioned
         else
-            blk = lru->findReplacement(pkt, writebacks, compress_blocks);
+            blk = lru->findReplacement(addr, writebacks);
     } else {
         DPRINTF(Split, "finding replacement for cpu_req\n");
-        blk = lru->findReplacement(pkt, writebacks,
-                                    compress_blocks);
+        blk = lru->findReplacement(addr, writebacks);
         cpu_repl++;
     }
 
@@ -397,20 +343,23 @@ Split::findReplacement(Packet * &pkt, PacketList* &writebacks,
 
     // blk attributes for the new blk coming IN
     blk->ts = curTick;
-    blk->isNIC = (pkt->nic_pkt) ? true : false;
+    blk->isNIC = (pkt->nic_pkt()) ? true : false;
+#endif
 
     return blk;
 }
 
 void
-Split::invalidateBlk(int asid, Addr addr)
+Split::invalidateBlk(Split::BlkType *blk)
 {
-    SplitBlk *blk = lru->findBlock(addr, asid);
     if (!blk) {
+        fatal("FIXME!\n");
+#if 0
         if (lifo && lifo_net)
-            blk = lifo_net->findBlock(addr, asid);
+            blk = lifo_net->findBlock(addr);
         else if (lru_net)
-            blk = lru_net->findBlock(addr, asid);
+            blk = lru_net->findBlock(addr);
+#endif
 
         if (!blk)
             return;
@@ -421,19 +370,6 @@ Split::invalidateBlk(int asid, Addr addr)
     tagsInUse--;
 }
 
-void
-Split::doCopy(Addr source, Addr dest, int asid, PacketList* &writebacks)
-{
-    if (lru->probe(asid, source))
-        lru->doCopy(source, dest, asid, writebacks);
-    else {
-        if (lifo && lifo_net)
-            lifo_net->doCopy(source, dest, asid, writebacks);
-        else if (lru_net)
-            lru_net->doCopy(source, dest, asid, writebacks);
-    }
-}
-
 void
 Split::cleanupRefs()
 {
@@ -463,8 +399,13 @@ Split::regenerateBlkAddr(Addr tag, int set) const
 }
 
 Addr
-Split::extractTag(Addr addr, SplitBlk *blk) const
+Split::extractTag(Addr addr) const
 {
+    // need to fix this if we want to use it... old interface of
+    // passing in blk was too weird
+    assert(0);
+    return 0;
+/*
     if (blk->part == 2) {
         if (lifo_net)
             return lifo_net->extractTag(addr);
@@ -474,5 +415,6 @@ Split::extractTag(Addr addr, SplitBlk *blk) const
             panic("this shouldn't happen");
     } else
         return lru->extractTag(addr);
+*/
 }