1/* 2 * Copyright (c) 2012-2013, 2015, 2018 ARM Limited 3 * Copyright (c) 2016 Google Inc. 4 * Copyright (c) 2017, Centre National de la Recherche Scientifique 5 * All rights reserved. 6 * 7 * The license below extends only to copyright in the software and shall 8 * not be construed as granting a license to any other intellectual --- 32 unchanged lines hidden (view full) --- 41 * Rahul Thakur 42 * Pierre-Yves Peneau 43 */ 44 45#ifndef __MEM_COMM_MONITOR_HH__ 46#define __MEM_COMM_MONITOR_HH__ 47 48#include "base/statistics.hh" |
49#include "mem/port.hh" |
50#include "params/CommMonitor.hh" 51#include "sim/probe/mem.hh" |
52#include "sim/sim_object.hh" |
53 54/** |
55 * The communication monitor is a SimObject which can monitor statistics of |
56 * the communication happening between two ports in the memory system. 57 * 58 * Currently the following stats are implemented: Histograms of read/write 59 * transactions, read/write burst lengths, read/write bandwidth, 60 * outstanding read/write requests, read latency and inter transaction time 61 * (read-read, write-write, read/write-read/write). Furthermore it allows 62 * to capture the number of accesses to an address over time ("heat map"). 63 * All stats can be disabled from Python. 64 */ |
65class CommMonitor : public SimObject |
66{ 67 68 public: // Construction & SimObject interfaces 69 70 /** Parameters of communication monitor */ 71 typedef CommMonitorParams Params; 72 const Params* params() const 73 { return reinterpret_cast<const Params*>(_params); } --- 5 unchanged lines hidden (view full) --- 79 */ 80 CommMonitor(Params* params); 81 82 void init() override; 83 void regStats() override; 84 void startup() override; 85 void regProbePoints() override; 86 |
87 public: // SimObject interfaces |
88 Port &getPort(const std::string &if_name, 89 PortID idx=InvalidPortID) override; 90 91 private: 92 93 /** 94 * Sender state class for the monitor so that we can annotate 95 * packets with a transmit time and receive time. --- 355 unchanged lines hidden --- |