@@ -25,9 +25,9 @@ class MonitorBase
2525
2626 // standard functions to supprt a type of monitoring
2727 virtual bool attach (uint64_t cache_id) = 0; // decide whether to attach the mointor to this cache
28- virtual void read (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data) = 0;
29- virtual void write (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data) = 0;
30- virtual void invalid (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, const CMMetadataBase *meta, const CMDataBase *data) = 0;
28+ virtual void read (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data) = 0;
29+ virtual void write (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data) = 0;
30+ virtual void invalid (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, const CMMetadataBase *meta, const CMDataBase *data) = 0;
3131 virtual bool magic_func (uint64_t cache_id, uint64_t addr, uint64_t magic_id, void *magic_data) { return false ; } // a special function to log non-standard information to a special monitor
3232
3333 // control
@@ -56,9 +56,9 @@ class MonitorContainerBase
5656 // support run-time assign/reassign mointors
5757 void detach_monitor () { monitors.clear (); }
5858
59- virtual void hook_read (uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) = 0;
60- virtual void hook_write (uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) = 0;
61- virtual void hook_manage (uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, bool evict, bool writeback, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) = 0;
59+ virtual void hook_read (uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) = 0;
60+ virtual void hook_write (uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) = 0;
61+ virtual void hook_manage (uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, bool evict, bool writeback, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) = 0;
6262 virtual void magic_func (uint64_t addr, uint64_t magic_id, void *magic_data) = 0; // an interface for special communication with a specific monitor if attached
6363 virtual void pause () = 0;
6464 virtual void resume () = 0;
@@ -103,19 +103,19 @@ class CacheMonitorImp : public MonitorContainerBase
103103 }
104104 }
105105
106- virtual void hook_read (uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) override {
107- if constexpr (EnMon) for (auto m:monitors) m->read (id, addr, ai, s, w, hit, meta, data);
106+ virtual void hook_read (uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) override {
107+ if constexpr (EnMon) for (auto m:monitors) m->read (id, addr, ai, s, w, ev_rank, hit, meta, data);
108108 if constexpr (!C_VOID<DLY>) timer->read (addr, ai, s, w, hit, delay);
109109 }
110110
111- virtual void hook_write (uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) override {
112- if constexpr (EnMon) for (auto m:monitors) m->write (id, addr, ai, s, w, hit, meta, data);
111+ virtual void hook_write (uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) override {
112+ if constexpr (EnMon) for (auto m:monitors) m->write (id, addr, ai, s, w, ev_rank, hit, meta, data);
113113 if constexpr (!C_VOID<DLY>) timer->write (addr, ai, s, w, hit, delay);
114114 }
115115
116- virtual void hook_manage (uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, bool evict, bool writeback, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) override {
116+ virtual void hook_manage (uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, bool evict, bool writeback, const CMMetadataBase *meta, const CMDataBase *data, uint64_t *delay, unsigned int genre = 0 ) override {
117117 if (hit && evict) {
118- if constexpr (EnMon) for (auto m:monitors) m->invalid (id, addr, ai, s, w, meta, data);
118+ if constexpr (EnMon) for (auto m:monitors) m->invalid (id, addr, ai, s, w, ev_rank, meta, data);
119119 }
120120 if constexpr (!C_VOID<DLY>) timer->manage (addr, ai, s, w, hit, evict, writeback, delay);
121121 }
@@ -153,13 +153,13 @@ class SimpleAccMonitor : public MonitorBase
153153
154154 virtual bool attach (uint64_t cache_id) override { return true ; }
155155
156- virtual void read (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
156+ virtual void read (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
157157 if (!active) return ;
158158 cnt_access++;
159159 if (!hit) cnt_miss++;
160160 }
161161
162- virtual void write (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
162+ virtual void write (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
163163 if (!active) return ;
164164 cnt_access++;
165165 cnt_write++;
@@ -169,7 +169,7 @@ class SimpleAccMonitor : public MonitorBase
169169 }
170170 }
171171
172- virtual void invalid (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, const CMMetadataBase *meta, const CMDataBase *data) override {
172+ virtual void invalid (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, const CMMetadataBase *meta, const CMDataBase *data) override {
173173 if (!active) return ;
174174 cnt_invalid++;
175175 }
@@ -210,10 +210,10 @@ class SimpleTracer : public MonitorBase
210210
211211 virtual bool attach (uint64_t cache_id) { return true ; }
212212
213- virtual void read (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
213+ virtual void read (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
214214 if (!active) return ;
215215 std::string msg; msg.reserve (100 );
216- msg += (boost::format (" %-10s read %016x %02d %04d %02d %1x" ) % UniqueID::name (cache_id) % addr % ai % s % w % hit).str ();
216+ msg += (boost::format (" %-10s read %016x %02d %04d %02d %02d % 1x" ) % UniqueID::name (cache_id) % addr % ai % s % w % ev_rank % hit).str ();
217217
218218 if (meta)
219219 msg.append (" [" ).append (meta->to_string ()).append (" ]" );
@@ -225,10 +225,10 @@ class SimpleTracer : public MonitorBase
225225
226226 print (msg);
227227 }
228- virtual void write (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
228+ virtual void write (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
229229 if (!active) return ;
230230 std::string msg; msg.reserve (100 );
231- msg += (boost::format (" %-10s write %016x %02d %04d %02d %1x" ) % UniqueID::name (cache_id) % addr % ai % s % w % hit).str ();
231+ msg += (boost::format (" %-10s write %016x %02d %04d %02d %02d % 1x" ) % UniqueID::name (cache_id) % addr % ai % s % w % ev_rank % hit).str ();
232232
233233 if (meta)
234234 msg.append (" [" ).append (meta->to_string ()).append (" ]" );
@@ -240,10 +240,10 @@ class SimpleTracer : public MonitorBase
240240
241241 print (msg);
242242 }
243- virtual void invalid (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, const CMMetadataBase *meta, const CMDataBase *data) override {
243+ virtual void invalid (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, const CMMetadataBase *meta, const CMDataBase *data) override {
244244 if (!active) return ;
245245 std::string msg; msg.reserve (100 );
246- msg += (boost::format (" %-10s evict %016x %02d %04d %02d " ) % UniqueID::name (cache_id) % addr % ai % s % w).str () ;
246+ msg += (boost::format (" %-10s evict %016x %02d %04d %02d %02d " ) % UniqueID::name (cache_id) % addr % ai % s % w % ev_rank ).str () ;
247247
248248 if (meta)
249249 msg.append (" [" ).append (meta->to_string ()).append (" ]" );
@@ -297,10 +297,10 @@ class AddrTracer : public MonitorBase
297297
298298 virtual bool attach (uint64_t cache_id) override { return true ; }
299299
300- virtual void read (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
300+ virtual void read (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
301301 if (!active || addr != target) return ;
302302 std::string msg; msg.reserve (100 );
303- msg += (boost::format (" %-10s read %016x %02d %04d %02d %1x" ) % UniqueID::name (cache_id) % addr % ai % s % w % hit).str ();
303+ msg += (boost::format (" %-10s read %016x %02d %04d %02d %02d % 1x" ) % UniqueID::name (cache_id) % addr % ai % s % w % ev_rank % hit).str ();
304304
305305 if (meta)
306306 msg.append (" [" ).append (meta->to_string ()).append (" ]" );
@@ -313,10 +313,10 @@ class AddrTracer : public MonitorBase
313313 print (msg);
314314 }
315315
316- virtual void write (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
316+ virtual void write (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, bool hit, const CMMetadataBase *meta, const CMDataBase *data) override {
317317 if (!active || target != addr) return ;
318318 std::string msg; msg.reserve (100 );
319- msg += (boost::format (" %-10s write %016x %02d %04d %02d %1x" ) % UniqueID::name (cache_id) % addr % ai % s % w % hit).str ();
319+ msg += (boost::format (" %-10s write %016x %02d %04d %02d %02d % 1x" ) % UniqueID::name (cache_id) % addr % ai % s % w % ev_rank % hit).str ();
320320
321321 if (meta)
322322 msg.append (" [" ).append (meta->to_string ()).append (" ]" );
@@ -329,10 +329,10 @@ class AddrTracer : public MonitorBase
329329 print (msg);
330330 }
331331
332- virtual void invalid (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, const CMMetadataBase *meta, const CMDataBase *data) override {
332+ virtual void invalid (uint64_t cache_id, uint64_t addr, int32_t ai, int32_t s, int32_t w, int32_t ev_rank, const CMMetadataBase *meta, const CMDataBase *data) override {
333333 if (!active || target != addr) return ;
334334 std::string msg; msg.reserve (100 );
335- msg += (boost::format (" %-10s evict %016x %02d %04d %02d " ) % UniqueID::name (cache_id) % addr % ai % s % w).str () ;
335+ msg += (boost::format (" %-10s evict %016x %02d %04d %02d %02d " ) % UniqueID::name (cache_id) % addr % ai % s % w % ev_rank ).str () ;
336336
337337 if (meta)
338338 msg.append (" [" ).append (meta->to_string ()).append (" ]" );
0 commit comments