diff options
| author | Nick <[email protected]> | 2019-02-19 18:40:45 -0500 |
|---|---|---|
| committer | Nick <[email protected]> | 2019-02-19 18:40:45 -0500 |
| commit | 13f07a2c820422db7e4e88e43d692dfe8e1b8cad (patch) | |
| tree | e0e16e9f83880f9860be0ae846c467e3c8f2dd88 /src/gpgpu-sim/gpu-cache.h | |
| parent | 4ed2d9e106d797eeaf5199100984dc7c658cdc1e (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.h | 14 |
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(); } |
