changeset 410194bb3049 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=410194bb3049
description:
        tlb: Don't separate the TLB classes into an instruction TLB and a data 
TLB

diffstat:

34 files changed, 310 insertions(+), 601 deletions(-)
src/arch/alpha/AlphaTLB.py            |   14 -
src/arch/alpha/tlb.cc                 |  253 +++++++++++++++------------------
src/arch/alpha/tlb.hh                 |   68 +++-----
src/arch/mips/MipsTLB.py              |   20 --
src/arch/mips/tlb.cc                  |   97 ++----------
src/arch/mips/tlb.hh                  |   32 ----
src/arch/sparc/SparcTLB.py            |   14 -
src/arch/sparc/tlb.cc                 |   96 ++++--------
src/arch/sparc/tlb.hh                 |   59 +------
src/arch/sparc/vtophys.cc             |    4 
src/arch/x86/X86TLB.py                |   14 -
src/arch/x86/pagetable_walker.cc      |    2 
src/arch/x86/tlb.cc                   |   61 +------
src/arch/x86/tlb.hh                   |   50 +-----
src/cpu/BaseCPU.py                    |   26 +--
src/cpu/checker/cpu.hh                |    7 
src/cpu/checker/thread_context.hh     |    4 
src/cpu/inorder/cpu.hh                |    4 
src/cpu/inorder/resources/tlb_unit.cc |    2 
src/cpu/inorder/thread_context.hh     |    4 
src/cpu/o3/cpu.hh                     |    4 
src/cpu/o3/fetch_impl.hh              |    3 
src/cpu/o3/thread_context.hh          |    4 
src/cpu/ozone/cpu.hh                  |   11 -
src/cpu/ozone/front_end_impl.hh       |    2 
src/cpu/ozone/simple_params.hh        |    5 
src/cpu/simple/atomic.cc              |    2 
src/cpu/simple/timing.cc              |    2 
src/cpu/simple/timing.hh              |    6 
src/cpu/simple_thread.cc              |    4 
src/cpu/simple_thread.hh              |   12 -
src/cpu/thread_context.hh             |   11 -
src/sim/tlb.cc                        |    7 
src/sim/tlb.hh                        |    7 

diffs (truncated from 1715 to 300 lines):

diff -r 6df0633d883b -r 410194bb3049 src/arch/alpha/AlphaTLB.py
--- a/src/arch/alpha/AlphaTLB.py        Wed Apr 08 22:21:25 2009 -0700
+++ b/src/arch/alpha/AlphaTLB.py        Wed Apr 08 22:21:27 2009 -0700
@@ -33,15 +33,5 @@
 
 class AlphaTLB(BaseTLB):
     type = 'AlphaTLB'
-    abstract = True
-    size = Param.Int("TLB size")
-
-class AlphaDTB(AlphaTLB):
-    type = 'AlphaDTB'
-    cxx_class = 'AlphaISA::DTB'
-    size = 64
-
-class AlphaITB(AlphaTLB):
-    type = 'AlphaITB'
-    cxx_class = 'AlphaISA::ITB'
-    size = 48
+    cxx_class = 'AlphaISA::TLB'
+    size = Param.Int(64, "TLB size")
diff -r 6df0633d883b -r 410194bb3049 src/arch/alpha/tlb.cc
--- a/src/arch/alpha/tlb.cc     Wed Apr 08 22:21:25 2009 -0700
+++ b/src/arch/alpha/tlb.cc     Wed Apr 08 22:21:27 2009 -0700
@@ -72,6 +72,90 @@
         delete [] table;
 }
 
+void
+TLB::regStats()
+{
+    fetch_hits
+        .name(name() + ".fetch_hits")
+        .desc("ITB hits");
+    fetch_misses
+        .name(name() + ".fetch_misses")
+        .desc("ITB misses");
+    fetch_acv
+        .name(name() + ".fetch_acv")
+        .desc("ITB acv");
+    fetch_accesses
+        .name(name() + ".fetch_accesses")
+        .desc("ITB accesses");
+
+    fetch_accesses = fetch_hits + fetch_misses;
+
+    read_hits
+        .name(name() + ".read_hits")
+        .desc("DTB read hits")
+        ;
+
+    read_misses
+        .name(name() + ".read_misses")
+        .desc("DTB read misses")
+        ;
+
+    read_acv
+        .name(name() + ".read_acv")
+        .desc("DTB read access violations")
+        ;
+
+    read_accesses
+        .name(name() + ".read_accesses")
+        .desc("DTB read accesses")
+        ;
+
+    write_hits
+        .name(name() + ".write_hits")
+        .desc("DTB write hits")
+        ;
+
+    write_misses
+        .name(name() + ".write_misses")
+        .desc("DTB write misses")
+        ;
+
+    write_acv
+        .name(name() + ".write_acv")
+        .desc("DTB write access violations")
+        ;
+
+    write_accesses
+        .name(name() + ".write_accesses")
+        .desc("DTB write accesses")
+        ;
+
+    data_hits
+        .name(name() + ".data_hits")
+        .desc("DTB hits")
+        ;
+
+    data_misses
+        .name(name() + ".data_misses")
+        .desc("DTB misses")
+        ;
+
+    data_acv
+        .name(name() + ".data_acv")
+        .desc("DTB access violations")
+        ;
+
+    data_accesses
+        .name(name() + ".data_accesses")
+        .desc("DTB accesses")
+        ;
+
+    data_hits = read_hits + write_hits;
+    data_misses = read_misses + write_misses;
+    data_acv = read_acv + write_acv;
+    data_accesses = read_accesses + write_accesses;
+}
+
 // look up an entry in the TLB
 TlbEntry *
 TLB::lookup(Addr vpn, uint8_t asn)
@@ -288,36 +372,8 @@
     }
 }
 
-///////////////////////////////////////////////////////////////////////
-//
-//  Alpha ITB
-//
-ITB::ITB(const Params *p)
-    : TLB(p)
-{}
-
-
-void
-ITB::regStats()
-{
-    hits
-        .name(name() + ".hits")
-        .desc("ITB hits");
-    misses
-        .name(name() + ".misses")
-        .desc("ITB misses");
-    acv
-        .name(name() + ".acv")
-        .desc("ITB acv");
-    accesses
-        .name(name() + ".accesses")
-        .desc("ITB accesses");
-
-    accesses = hits + misses;
-}
-
 Fault
-ITB::translateAtomic(RequestPtr req, ThreadContext *tc)
+TLB::translateInst(RequestPtr req, ThreadContext *tc)
 {
     //If this is a pal pc, then set PHYSICAL
     if (FULL_SYSTEM && PcPAL(req->getPC()))
@@ -326,7 +382,7 @@
     if (PcPAL(req->getPC())) {
         // strip off PAL PC marker (lsb is 1)
         req->setPaddr((req->getVaddr() & ~3) & PAddrImplMask);
-        hits++;
+        fetch_hits++;
         return NoFault;
     }
 
@@ -335,7 +391,7 @@
     } else {
         // verify that this is a good virtual address
         if (!validVirtualAddress(req->getVaddr())) {
-            acv++;
+            fetch_acv++;
             return new ItbAcvFault(req->getVaddr());
         }
 
@@ -352,7 +408,7 @@
             // only valid in kernel mode
             if (ICM_CM(tc->readMiscRegNoEffect(IPR_ICM)) !=
                 mode_kernel) {
-                acv++;
+                fetch_acv++;
                 return new ItbAcvFault(req->getVaddr());
             }
 
@@ -373,7 +429,7 @@
                               asn);
 
             if (!entry) {
-                misses++;
+                fetch_misses++;
                 return new ItbPageFault(req->getVaddr());
             }
 
@@ -385,11 +441,11 @@
             if (!(entry->xre &
                   (1 << ICM_CM(tc->readMiscRegNoEffect(IPR_ICM))))) {
                 // instruction access fault
-                acv++;
+                fetch_acv++;
                 return new ItbAcvFault(req->getVaddr());
             }
 
-            hits++;
+            fetch_hits++;
         }
     }
 
@@ -401,93 +457,8 @@
 
 }
 
-void
-ITB::translateTiming(RequestPtr req, ThreadContext *tc,
-        Translation *translation)
-{
-    assert(translation);
-    translation->finish(translateAtomic(req, tc), req, tc, false);
-}
-
-///////////////////////////////////////////////////////////////////////
-//
-//  Alpha DTB
-//
-DTB::DTB(const Params *p)
-     : TLB(p)
-{}
-
-void
-DTB::regStats()
-{
-    read_hits
-        .name(name() + ".read_hits")
-        .desc("DTB read hits")
-        ;
-
-    read_misses
-        .name(name() + ".read_misses")
-        .desc("DTB read misses")
-        ;
-
-    read_acv
-        .name(name() + ".read_acv")
-        .desc("DTB read access violations")
-        ;
-
-    read_accesses
-        .name(name() + ".read_accesses")
-        .desc("DTB read accesses")
-        ;
-
-    write_hits
-        .name(name() + ".write_hits")
-        .desc("DTB write hits")
-        ;
-
-    write_misses
-        .name(name() + ".write_misses")
-        .desc("DTB write misses")
-        ;
-
-    write_acv
-        .name(name() + ".write_acv")
-        .desc("DTB write access violations")
-        ;
-
-    write_accesses
-        .name(name() + ".write_accesses")
-        .desc("DTB write accesses")
-        ;
-
-    hits
-        .name(name() + ".hits")
-        .desc("DTB hits")
-        ;
-
-    misses
-        .name(name() + ".misses")
-        .desc("DTB misses")
-        ;
-
-    acv
-        .name(name() + ".acv")
-        .desc("DTB access violations")
-        ;
-
-    accesses
-        .name(name() + ".accesses")
-        .desc("DTB accesses")
-        ;
-
-    hits = read_hits + write_hits;
-    misses = read_misses + write_misses;
-    acv = read_acv + write_acv;
-    accesses = read_accesses + write_accesses;
-}
-
 Fault
-DTB::translateAtomic(RequestPtr req, ThreadContext *tc, bool write)
+TLB::translateData(RequestPtr req, ThreadContext *tc, bool write)
 {
     Addr pc = tc->readPC();
 
@@ -624,14 +595,6 @@
     return checkCacheability(req);
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to