1/* 2 * Copyright (c) 2006 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 35 unchanged lines hidden (view full) --- 44 * its time buffer at the same time as all other stages. The 45 * ActivityRecorder also records if a stage has activity to do next 46 * cycle. The recorder keeps a count of these two. Thus any time the 47 * count is non-zero, there is either communication still in flight, 48 * or activity that still must be done, meaning that the CPU can not 49 * idle. If count is zero, then the CPU can safely idle as it has no 50 * more outstanding work to do. 51 */ |
52class ActivityRecorder 53{ |
54 public: |
55 ActivityRecorder(const std::string &name, int num_stages, 56 int longest_latency, int count); |
57 58 /** Records that there is activity this cycle. */ 59 void activity(); 60 61 /** Advances the activity buffer, decrementing the activityCount 62 * if active communication just left the time buffer, and 63 * determining if there is no activity. 64 */ --- 24 unchanged lines hidden (view full) --- 89 void dump(); 90 91 /** Debug function to ensure that the activity count matches the 92 * contents of the time buffer. 93 */ 94 void validate(); 95 96 private: |
97 // provide name() for DPRINTF. 98 std::string _name; 99 const std::string &name() { return _name; } 100 |
101 /** Time buffer that tracks if any cycles has active communication 102 * in them. It should be as long as the longest communication 103 * latency in the system. Each time any time buffer is written, 104 * the activity buffer should also be written to. The 105 * activityBuffer is advanced along with all the other time 106 * buffers, so it should have a 1 somewhere in it only if there 107 * is active communication in a time buffer. 108 */ --- 24 unchanged lines hidden --- |