summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/gpu-cache.h
diff options
context:
space:
mode:
authorNick <[email protected]>2019-02-19 18:40:45 -0500
committerNick <[email protected]>2019-02-19 18:40:45 -0500
commit13f07a2c820422db7e4e88e43d692dfe8e1b8cad (patch)
treee0e16e9f83880f9860be0ae846c467e3c8f2dd88 /src/gpgpu-sim/gpu-cache.h
parent4ed2d9e106d797eeaf5199100984dc7c658cdc1e (diff)
Add initial infrastrucutre to support L2 (and other) cache statistics for AerialVision
Diffstat (limited to 'src/gpgpu-sim/gpu-cache.h')
-rw-r--r--src/gpgpu-sim/gpu-cache.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gpgpu-sim/gpu-cache.h b/src/gpgpu-sim/gpu-cache.h
index e663cf6..c1061ef 100644
--- a/src/gpgpu-sim/gpu-cache.h
+++ b/src/gpgpu-sim/gpu-cache.h
@@ -978,7 +978,11 @@ class cache_stats {
public:
cache_stats();
void clear();
+ // Clear AerialVision cache stats after each window
+ void clear_pw();
void inc_stats(int access_type, int access_outcome);
+ // Increment AerialVision cache stats
+ void inc_stats_pw(int access_type, int access_outcome);
void inc_fail_stats(int access_type, int fail_outcome);
enum cache_request_status select_stats_status(enum cache_request_status probe, enum cache_request_status access) const;
unsigned &operator()(int access_type, int access_outcome, bool fail_outcome);
@@ -991,12 +995,18 @@ public:
unsigned get_stats(enum mem_access_type *access_type, unsigned num_access_type, enum cache_request_status *access_status, unsigned num_access_status) const;
void get_sub_stats(struct cache_sub_stats &css) const;
+ // Get per-window cache stats for AerialVision
+ unsigned get_stats_pw(enum mem_access_type *access_type, unsigned num_access_type, enum cache_request_status *access_status, unsigned num_access_status) const;
+ void get_sub_stats_pw(struct cache_sub_stats &css) const;
+
void sample_cache_port_utility(bool data_port_busy, bool fill_port_busy);
private:
bool check_valid(int type, int status) const;
bool check_fail_valid(int type, int fail) const;
std::vector< std::vector<unsigned> > m_stats;
+ // AerialVision cache stats (per-window)
+ std::vector< std::vector<unsigned> > m_stats_pw;
std::vector< std::vector<unsigned> > m_fail_stats;
unsigned long long m_cache_port_available_cycles;
@@ -1082,6 +1092,10 @@ public:
void get_sub_stats(struct cache_sub_stats &css) const {
m_stats.get_sub_stats(css);
}
+ // Per-window sub stats for AerialVision support
+ void get_sub_stats_pw(struct cache_sub_stats &css) const {
+ m_stats.get_sub_stats_pw(css);
+ }
// accessors for cache bandwidth availability
bool data_port_free() const { return m_bandwidth_management.data_port_free(); }