base.cc revision 10360:919c02740209
19814Sandreas.hansson@arm.com/* 22292SN/A * Copyright (c) 2013 ARM Limited 313590Srekai.gonzalezalberquilla@arm.com * All rights reserved. 410239Sbinhpham@cs.rutgers.edu * 57597Sminkyu.jeong@arm.com * The license below extends only to copyright in the software and shall 67597Sminkyu.jeong@arm.com * not be construed as granting a license to any other intellectual 77597Sminkyu.jeong@arm.com * property including but not limited to intellectual property relating 87597Sminkyu.jeong@arm.com * to a hardware implementation of the functionality of the software 97597Sminkyu.jeong@arm.com * licensed hereunder. You may use the software subject to the license 107597Sminkyu.jeong@arm.com * terms below provided that you ensure that this notice is replicated 117597Sminkyu.jeong@arm.com * unmodified and in its entirety in all distributions of the software, 127597Sminkyu.jeong@arm.com * modified or unmodified, in source code or in binary form. 137597Sminkyu.jeong@arm.com * 147597Sminkyu.jeong@arm.com * Copyright (c) 2003-2005 The Regents of The University of Michigan 157597Sminkyu.jeong@arm.com * All rights reserved. 162292SN/A * 172292SN/A * Redistribution and use in source and binary forms, with or without 182292SN/A * modification, are permitted provided that the following conditions are 192292SN/A * met: redistributions of source code must retain the above copyright 202292SN/A * notice, this list of conditions and the following disclaimer; 212292SN/A * redistributions in binary form must reproduce the above copyright 222292SN/A * notice, this list of conditions and the following disclaimer in the 232292SN/A * documentation and/or other materials provided with the distribution; 242292SN/A * neither the name of the copyright holders nor the names of its 252292SN/A * contributors may be used to endorse or promote products derived from 262292SN/A * this software without specific prior written permission. 272292SN/A * 282292SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 292292SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 302292SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 312292SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 322292SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 332292SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 342292SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 352292SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 362292SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 372292SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 382292SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 392292SN/A * 402292SN/A * Authors: Erik Hallnor 412689Sktlim@umich.edu * Ron Dreslinski 422689Sktlim@umich.edu */ 432689Sktlim@umich.edu 442292SN/A/** 452292SN/A * @file 469944Smatt.horsnell@ARM.com * Definitions of BaseTags. 479944Smatt.horsnell@ARM.com */ 489944Smatt.horsnell@ARM.com 498591Sgblack@eecs.umich.edu#include "config/the_isa.hh" 503326Sktlim@umich.edu#include "cpu/smt.hh" //maxThreadsPerCPU 518229Snate@binkert.org#include "mem/cache/tags/base.hh" 526658Snate@binkert.org#include "mem/cache/base.hh" 538887Sgeoffrey.blake@arm.com#include "sim/sim_exit.hh" 542907Sktlim@umich.edu 552292SN/Ausing namespace std; 568232Snate@binkert.org 578232Snate@binkert.orgBaseTags::BaseTags(const Params *p) 588232Snate@binkert.org : ClockedObject(p), blkSize(p->block_size), size(p->size), 599527SMatt.Horsnell@arm.com hitLatency(p->hit_latency), cache(nullptr), warmupBound(0), 602722Sktlim@umich.edu warmedUp(false), numBlocks(0) 612669Sktlim@umich.edu{ 622292SN/A} 632669Sktlim@umich.edu 6413429Srekai.gonzalezalberquilla@arm.comvoid 6513429Srekai.gonzalezalberquilla@arm.comBaseTags::setCache(BaseCache *_cache) 668581Ssteve.reinhardt@amd.com{ 678581Ssteve.reinhardt@amd.com assert(!cache); 682292SN/A cache = _cache; 6913590Srekai.gonzalezalberquilla@arm.com} 7013590Srekai.gonzalezalberquilla@arm.com 712292SN/Avoid 722292SN/ABaseTags::regStats() 732669Sktlim@umich.edu{ 742292SN/A using namespace Stats; 752678Sktlim@umich.edu replacements 762292SN/A .init(maxThreadsPerCPU) 779444SAndreas.Sandberg@ARM.com .name(name() + ".replacements") 789444SAndreas.Sandberg@ARM.com .desc("number of replacements") 799444SAndreas.Sandberg@ARM.com .flags(total) 804319Sktlim@umich.edu ; 8113590Srekai.gonzalezalberquilla@arm.com 8213590Srekai.gonzalezalberquilla@arm.com tagsInUse 832678Sktlim@umich.edu .name(name() + ".tagsinuse") 842678Sktlim@umich.edu .desc("Cycle average of tags in use") 852292SN/A ; 862678Sktlim@umich.edu 872678Sktlim@umich.edu totalRefs 885336Shines@cs.fsu.edu .name(name() + ".total_refs") 892678Sktlim@umich.edu .desc("Total number of references to valid blocks.") 904873Sstever@eecs.umich.edu ; 912678Sktlim@umich.edu 922292SN/A sampledRefs 9313590Srekai.gonzalezalberquilla@arm.com .name(name() + ".sampled_refs") 9413590Srekai.gonzalezalberquilla@arm.com .desc("Sample count of references to valid blocks.") 9513590Srekai.gonzalezalberquilla@arm.com ; 9613590Srekai.gonzalezalberquilla@arm.com 9713590Srekai.gonzalezalberquilla@arm.com avgRefs 9813590Srekai.gonzalezalberquilla@arm.com .name(name() + ".avg_refs") 9913590Srekai.gonzalezalberquilla@arm.com .desc("Average number of references to valid blocks.") 10013590Srekai.gonzalezalberquilla@arm.com ; 10113590Srekai.gonzalezalberquilla@arm.com 10213590Srekai.gonzalezalberquilla@arm.com avgRefs = totalRefs/sampledRefs; 10313590Srekai.gonzalezalberquilla@arm.com 10413590Srekai.gonzalezalberquilla@arm.com warmupCycle 10513590Srekai.gonzalezalberquilla@arm.com .name(name() + ".warmup_cycle") 10613590Srekai.gonzalezalberquilla@arm.com .desc("Cycle when the warmup percentage was hit.") 10713590Srekai.gonzalezalberquilla@arm.com ; 10813590Srekai.gonzalezalberquilla@arm.com 10913590Srekai.gonzalezalberquilla@arm.com occupancies 11013590Srekai.gonzalezalberquilla@arm.com .init(cache->system->maxMasters()) 1112678Sktlim@umich.edu .name(name() + ".occ_blocks") 1122678Sktlim@umich.edu .desc("Average occupied blocks per requestor") 1132678Sktlim@umich.edu .flags(nozero | nonan) 1142678Sktlim@umich.edu ; 1152678Sktlim@umich.edu for (int i = 0; i < cache->system->maxMasters(); i++) { 1162678Sktlim@umich.edu occupancies.subname(i, cache->system->getMasterName(i)); 1172344SN/A } 11813590Srekai.gonzalezalberquilla@arm.com 1192678Sktlim@umich.edu avgOccs 12013590Srekai.gonzalezalberquilla@arm.com .name(name() + ".occ_percent") 12113590Srekai.gonzalezalberquilla@arm.com .desc("Average percentage of cache occupancy") 12213590Srekai.gonzalezalberquilla@arm.com .flags(nozero | total) 1236974Stjones1@inf.ed.ac.uk ; 1249444SAndreas.Sandberg@ARM.com for (int i = 0; i < cache->system->maxMasters(); i++) { 12510327Smitch.hayenga@arm.com avgOccs.subname(i, cache->system->getMasterName(i)); 12613590Srekai.gonzalezalberquilla@arm.com } 12713652Sqtt2@cornell.edu 12812216Snikos.nikoleris@arm.com avgOccs = occupancies / Stats::constant(numBlocks); 12913652Sqtt2@cornell.edu 13013652Sqtt2@cornell.edu occupanciesTaskId 13113590Srekai.gonzalezalberquilla@arm.com .init(ContextSwitchTaskId::NumTaskId) 13213652Sqtt2@cornell.edu .name(name() + ".occ_task_id_blocks") 13313590Srekai.gonzalezalberquilla@arm.com .desc("Occupied blocks per task id") 13413590Srekai.gonzalezalberquilla@arm.com .flags(nozero | nonan) 13513590Srekai.gonzalezalberquilla@arm.com ; 1366974Stjones1@inf.ed.ac.uk 13713590Srekai.gonzalezalberquilla@arm.com ageTaskId 13813652Sqtt2@cornell.edu .init(ContextSwitchTaskId::NumTaskId, 5) 13913652Sqtt2@cornell.edu .name(name() + ".age_task_id_blocks") 14013590Srekai.gonzalezalberquilla@arm.com .desc("Occupied blocks per task id") 1412678Sktlim@umich.edu .flags(nozero | nonan) 1422344SN/A ; 1432292SN/A 1442292SN/A percentOccsTaskId 1452292SN/A .name(name() + ".occ_task_id_percent") 14613472Srekai.gonzalezalberquilla@arm.com .desc("Percentage of cache occupancy per task id") 14713472Srekai.gonzalezalberquilla@arm.com .flags(nozero) 14813472Srekai.gonzalezalberquilla@arm.com ; 14913590Srekai.gonzalezalberquilla@arm.com 15013590Srekai.gonzalezalberquilla@arm.com percentOccsTaskId = occupanciesTaskId / Stats::constant(numBlocks); 1512292SN/A 1522292SN/A tagAccesses 1532292SN/A .name(name() + ".tag_accesses") 1542292SN/A .desc("Number of tag accesses") 1552292SN/A ; 1565529Snate@binkert.org 15713472Srekai.gonzalezalberquilla@arm.com dataAccesses 1582292SN/A .name(name() + ".data_accesses") 15913472Srekai.gonzalezalberquilla@arm.com .desc("Number of data accesses") 16013472Srekai.gonzalezalberquilla@arm.com ; 1614329Sktlim@umich.edu 1624329Sktlim@umich.edu registerDumpCallback(new BaseTagsDumpCallback(this)); 1634329Sktlim@umich.edu registerExitCallback(new BaseTagsCallback(this)); 1642907Sktlim@umich.edu} 1652907Sktlim@umich.edu