gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sat_counter.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2005-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;
9  * redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution;
12  * neither the name of the copyright holders nor the names of its
13  * contributors may be used to endorse or promote products derived from
14  * this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  * Authors: Kevin Lim
29  */
30 
31 #ifndef __CPU_PRED_SAT_COUNTER_HH__
32 #define __CPU_PRED_SAT_COUNTER_HH__
33 
34 #include "base/misc.hh"
35 #include "base/types.hh"
36 
45 {
46  public:
51  : initialVal(0), counter(0)
52  { }
53 
58  SatCounter(unsigned bits)
59  : initialVal(0), maxVal((1 << bits) - 1), counter(0)
60  { }
61 
67  SatCounter(unsigned bits, uint8_t initial_val)
68  : initialVal(initial_val), maxVal((1 << bits) - 1),
69  counter(initial_val)
70  {
71  // Check to make sure initial value doesn't exceed the max
72  // counter value.
73  if (initial_val > maxVal) {
74  fatal("BP: Initial counter value exceeds max size.");
75  }
76  }
77 
81  void setBits(unsigned bits) { maxVal = (1 << bits) - 1; }
82 
83  void reset() { counter = initialVal; }
84 
88  void increment()
89  {
90  if (counter < maxVal) {
91  ++counter;
92  }
93  }
94 
98  void decrement()
99  {
100  if (counter > 0) {
101  --counter;
102  }
103  }
104 
108  uint8_t read() const
109  { return counter; }
110 
111  private:
112  uint8_t initialVal;
113  uint8_t maxVal;
114  uint8_t counter;
115 };
116 
117 #endif // __CPU_PRED_SAT_COUNTER_HH__
SatCounter()
Constructor for the counter.
Definition: sat_counter.hh:50
SatCounter(unsigned bits, uint8_t initial_val)
Constructor for the counter.
Definition: sat_counter.hh:67
void increment()
Increments the counter's current value.
Definition: sat_counter.hh:88
SatCounter(unsigned bits)
Constructor for the counter.
Definition: sat_counter.hh:58
uint8_t counter
Definition: sat_counter.hh:114
uint8_t initialVal
Definition: sat_counter.hh:112
uint8_t read() const
Read the counter's value.
Definition: sat_counter.hh:108
void decrement()
Decrements the counter's current value.
Definition: sat_counter.hh:98
Private counter class for the internal saturating counters.
Definition: sat_counter.hh:44
#define fatal(...)
Definition: misc.hh:163
void reset()
Definition: sat_counter.hh:83
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,16,32,64}_t.
void setBits(unsigned bits)
Sets the number of bits.
Definition: sat_counter.hh:81
T bits(T val, int first, int last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it...
Definition: bitfield.hh:67
uint8_t maxVal
Definition: sat_counter.hh:113

Generated on Fri Jun 9 2017 13:03:44 for gem5 by doxygen 1.8.6