X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmem%2Fcache%2Ftags%2Fbase.cc;h=8b52b746eaa2809080b0acba1331219a8acd15fd;hb=a66fe6a8c36c9ab49cb3a35065bfc645d51036c8;hp=b669a5b06491dd5b1771ca3a63532eca4f51a53b;hpb=85e8779de78ed913bb6d2a794bee5252d719b0e5;p=gem5.git diff --git a/src/mem/cache/tags/base.cc b/src/mem/cache/tags/base.cc index b669a5b06..8b52b746e 100644 --- a/src/mem/cache/tags/base.cc +++ b/src/mem/cache/tags/base.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 ARM Limited + * Copyright (c) 2013,2016 ARM Limited * All rights reserved. * * The license below extends only to copyright in the software and shall @@ -46,30 +46,41 @@ * Definitions of BaseTags. */ -#include "config/the_isa.hh" -#include "cpu/smt.hh" //maxThreadsPerCPU #include "mem/cache/tags/base.hh" + +#include "cpu/smt.hh" //maxThreadsPerCPU #include "mem/cache/base.hh" #include "sim/sim_exit.hh" using namespace std; BaseTags::BaseTags(const Params *p) - : ClockedObject(p), blkSize(p->block_size), size(p->size), - hitLatency(p->hit_latency) + : ClockedObject(p), blkSize(p->block_size), blkMask(blkSize - 1), + size(p->size), + lookupLatency(p->tag_latency), + accessLatency(p->sequential_access ? + p->tag_latency + p->data_latency : + std::max(p->tag_latency, p->data_latency)), + cache(nullptr), + warmupBound((p->warmup_percentage/100.0) * (p->size / p->block_size)), + warmedUp(false), numBlocks(p->size / p->block_size) { } void BaseTags::setCache(BaseCache *_cache) { + assert(!cache); cache = _cache; } void BaseTags::regStats() { + ClockedObject::regStats(); + using namespace Stats; + replacements .init(maxThreadsPerCPU) .name(name() + ".replacements") @@ -147,6 +158,16 @@ BaseTags::regStats() percentOccsTaskId = occupanciesTaskId / Stats::constant(numBlocks); + tagAccesses + .name(name() + ".tag_accesses") + .desc("Number of tag accesses") + ; + + dataAccesses + .name(name() + ".data_accesses") + .desc("Number of data accesses") + ; + registerDumpCallback(new BaseTagsDumpCallback(this)); registerExitCallback(new BaseTagsCallback(this)); }