summaryrefslogtreecommitdiff
path: root/src/mem/cache/BaseCache.py
diff options
context:
space:
mode:
authorLisa Hsu <Lisa.Hsu@amd.com>2010-02-23 09:34:22 -0800
committerLisa Hsu <Lisa.Hsu@amd.com>2010-02-23 09:34:22 -0800
commit1d3228481f3c5f9a4ad041cd21d57139f5f8f331 (patch)
tree7006a0d99e1f278df5ff88b70c4940230fe9e768 /src/mem/cache/BaseCache.py
parentbe4cf50c5a6a5761f6474fb9f85a9c241101f3ce (diff)
downloadgem5-1d3228481f3c5f9a4ad041cd21d57139f5f8f331.tar.xz
cache: Make caches sharing aware and add occupancy stats.
On the config end, if a shared L2 is created for the system, it is parameterized to have n sharers as defined by option.num_cpus. In addition to making the cache sharing aware so that discriminating tag policies can make use of context_ids to make decisions, I added an occupancy AverageStat and an occ % stat to each cache so that you could know which contexts are occupying how much cache on average, both in terms of blocks and percentage. Note that since devices have context_id -1, having an array of occ stats that correspond to each context_id will break here, so in FS mode I add an extra bucket for device blocks. This bucket is explicitly not added in SE mode in order to not only avoid ugliness in the stats.txt file, but to avoid broken stats (some formulas break when a bucket is 0).
Diffstat (limited to 'src/mem/cache/BaseCache.py')
-rw-r--r--src/mem/cache/BaseCache.py1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mem/cache/BaseCache.py b/src/mem/cache/BaseCache.py
index 5ded05400..dffac2234 100644
--- a/src/mem/cache/BaseCache.py
+++ b/src/mem/cache/BaseCache.py
@@ -44,6 +44,7 @@ class BaseCache(MemObject):
prioritizeRequests = Param.Bool(False,
"always service demand misses first")
repl = Param.Repl(NULL, "replacement policy")
+ num_cpus = Param.Int(1, "number of cpus sharing this cache")
size = Param.MemorySize("capacity in bytes")
forward_snoops = Param.Bool(True,
"forward snoops from mem side to cpu side")