Deleted Added
sdiff udiff text old ( 2689:dbf969c18a65 ) new ( 5804:34fe9bbc6705 )
full compact
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 public:
54 ActivityRecorder(int num_stages, int longest_latency, int count);
55
56 /** Records that there is activity this cycle. */
57 void activity();
58
59 /** Advances the activity buffer, decrementing the activityCount
60 * if active communication just left the time buffer, and
61 * determining if there is no activity.
62 */

--- 24 unchanged lines hidden (view full) ---

87 void dump();
88
89 /** Debug function to ensure that the activity count matches the
90 * contents of the time buffer.
91 */
92 void validate();
93
94 private:
95 /** Time buffer that tracks if any cycles has active communication
96 * in them. It should be as long as the longest communication
97 * latency in the system. Each time any time buffer is written,
98 * the activity buffer should also be written to. The
99 * activityBuffer is advanced along with all the other time
100 * buffers, so it should have a 1 somewhere in it only if there
101 * is active communication in a time buffer.
102 */

--- 24 unchanged lines hidden ---