base.cc (8833:2870638642bd) base.cc (9796:485399270ca1)
1/*
1/*
2 * Copyright (c) 2013 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright

--- 26 unchanged lines hidden (view full) ---

36
37#include "cpu/smt.hh" //maxThreadsPerCPU
38#include "mem/cache/tags/base.hh"
39#include "mem/cache/base.hh"
40#include "sim/sim_exit.hh"
41
42using namespace std;
43
14 * Copyright (c) 2003-2005 The Regents of The University of Michigan
15 * All rights reserved.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions are
19 * met: redistributions of source code must retain the above copyright
20 * notice, this list of conditions and the following disclaimer;
21 * redistributions in binary form must reproduce the above copyright

--- 26 unchanged lines hidden (view full) ---

48
49#include "cpu/smt.hh" //maxThreadsPerCPU
50#include "mem/cache/tags/base.hh"
51#include "mem/cache/base.hh"
52#include "sim/sim_exit.hh"
53
54using namespace std;
55
56BaseTags::BaseTags(const Params *p)
57 : ClockedObject(p), blkSize(p->block_size), size(p->size),
58 hitLatency(p->hit_latency)
59{
60}
61
44void
45BaseTags::setCache(BaseCache *_cache)
46{
47 cache = _cache;
62void
63BaseTags::setCache(BaseCache *_cache)
64{
65 cache = _cache;
48 objName = cache->name();
49}
50
51void
66}
67
68void
52BaseTags::regStats(const string &name)
69BaseTags::regStats()
53{
54 using namespace Stats;
55 replacements
56 .init(maxThreadsPerCPU)
70{
71 using namespace Stats;
72 replacements
73 .init(maxThreadsPerCPU)
57 .name(name + ".replacements")
74 .name(name() + ".replacements")
58 .desc("number of replacements")
59 .flags(total)
60 ;
61
62 tagsInUse
75 .desc("number of replacements")
76 .flags(total)
77 ;
78
79 tagsInUse
63 .name(name + ".tagsinuse")
80 .name(name() + ".tagsinuse")
64 .desc("Cycle average of tags in use")
65 ;
66
67 totalRefs
81 .desc("Cycle average of tags in use")
82 ;
83
84 totalRefs
68 .name(name + ".total_refs")
85 .name(name() + ".total_refs")
69 .desc("Total number of references to valid blocks.")
70 ;
71
72 sampledRefs
86 .desc("Total number of references to valid blocks.")
87 ;
88
89 sampledRefs
73 .name(name + ".sampled_refs")
90 .name(name() + ".sampled_refs")
74 .desc("Sample count of references to valid blocks.")
75 ;
76
77 avgRefs
91 .desc("Sample count of references to valid blocks.")
92 ;
93
94 avgRefs
78 .name(name + ".avg_refs")
95 .name(name() + ".avg_refs")
79 .desc("Average number of references to valid blocks.")
80 ;
81
82 avgRefs = totalRefs/sampledRefs;
83
84 warmupCycle
96 .desc("Average number of references to valid blocks.")
97 ;
98
99 avgRefs = totalRefs/sampledRefs;
100
101 warmupCycle
85 .name(name + ".warmup_cycle")
102 .name(name() + ".warmup_cycle")
86 .desc("Cycle when the warmup percentage was hit.")
87 ;
88
89 occupancies
90 .init(cache->system->maxMasters())
103 .desc("Cycle when the warmup percentage was hit.")
104 ;
105
106 occupancies
107 .init(cache->system->maxMasters())
91 .name(name + ".occ_blocks")
108 .name(name() + ".occ_blocks")
92 .desc("Average occupied blocks per requestor")
93 .flags(nozero | nonan)
94 ;
95 for (int i = 0; i < cache->system->maxMasters(); i++) {
96 occupancies.subname(i, cache->system->getMasterName(i));
97 }
98
99 avgOccs
109 .desc("Average occupied blocks per requestor")
110 .flags(nozero | nonan)
111 ;
112 for (int i = 0; i < cache->system->maxMasters(); i++) {
113 occupancies.subname(i, cache->system->getMasterName(i));
114 }
115
116 avgOccs
100 .name(name + ".occ_percent")
117 .name(name() + ".occ_percent")
101 .desc("Average percentage of cache occupancy")
102 .flags(nozero | total)
103 ;
104 for (int i = 0; i < cache->system->maxMasters(); i++) {
105 avgOccs.subname(i, cache->system->getMasterName(i));
106 }
107
108 avgOccs = occupancies / Stats::constant(numBlocks);
109
110 registerExitCallback(new BaseTagsCallback(this));
111}
118 .desc("Average percentage of cache occupancy")
119 .flags(nozero | total)
120 ;
121 for (int i = 0; i < cache->system->maxMasters(); i++) {
122 avgOccs.subname(i, cache->system->getMasterName(i));
123 }
124
125 avgOccs = occupancies / Stats::constant(numBlocks);
126
127 registerExitCallback(new BaseTagsCallback(this));
128}