gem5  v20.1.0.0
tage_sc_l_64KB.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 Metempsy Technology Consulting
3  * All rights reserved.
4  *
5  * Copyright (c) 2006 INRIA (Institut National de Recherche en
6  * Informatique et en Automatique / French National Research Institute
7  * for Computer Science and Applied Mathematics)
8  *
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions are
13  * met: redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer;
15  * redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in the
17  * documentation and/or other materials provided with the distribution;
18  * neither the name of the copyright holders nor the names of its
19  * contributors may be used to endorse or promote products derived from
20  * this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  *
34  * Author: AndrĂ© Seznec, Pau Cabre, Javier Bueno
35  *
36  */
37 
38 /*
39  * 64KB TAGE-SC-L branch predictor (devised by Andre Seznec)
40  */
41 
43 
45  TAGE_SC_L_64KB_StatisticalCorrectorParams *p)
47  numEntriesSecondLocalHistories(p->numEntriesSecondLocalHistories),
48  numEntriesThirdLocalHistories(p->numEntriesThirdLocalHistories),
49  pnb(p->pnb),
50  logPnb(p->logPnb),
51  pm(p->pm),
52  snb(p->snb),
53  logSnb(p->logSnb),
54  sm(p->sm),
55  tnb(p->tnb),
56  logTnb(p->logTnb),
57  tm(p->tm),
58  imnb(p->imnb),
59  logImnb(p->logImnb),
60  imm(p->imm)
61 {
66 
67 }
68 
71 {
73 
74  sh->setNumOrdinalHistories(3);
75  sh->initLocalHistory(1, numEntriesFirstLocalHistories, 2);
76  sh->initLocalHistory(2, numEntriesSecondLocalHistories, 5);
77  sh->initLocalHistory(3, numEntriesThirdLocalHistories, logTnb);
78 
79  sh->imHist.resize(1 << im[0]);
80  return sh;
81 }
82 
83 unsigned
85  BranchInfo* bi, int hitBank, int altBank) const
86 {
87  return (bi->predBeforeSC + (((hitBank+1)/4)<<4) + (bi->highConf<<1) +
88  (bi->lowConf <<2) + ((altBank!=0)<<3) +
89  ((branch_pc^(branch_pc>>2))<<7)) & ((1<<logBias) -1);
90 }
91 
92 int
94  BranchInfo* bi, int & lsum, int64_t pathHist)
95 {
97  static_cast<SC_64KB_ThreadHistory *>(scHistory);
98 
99  lsum += gPredict(
100  (branch_pc << 1) + bi->predBeforeSC, sh->bwHist, bwm,
101  bwgehl, bwnb, logBwnb, wbw);
102 
103  lsum += gPredict(
104  branch_pc, pathHist, pm, pgehl, pnb, logPnb, wp);
105 
106  lsum += gPredict(
107  branch_pc, sh->getLocalHistory(1, branch_pc), lm,
108  lgehl, lnb, logLnb, wl);
109 
110  lsum += gPredict(
111  branch_pc, sh->getLocalHistory(2, branch_pc), sm,
112  sgehl, snb, logSnb, ws);
113 
114  lsum += gPredict(
115  branch_pc, sh->getLocalHistory(3, branch_pc), tm,
116  tgehl, tnb, logTnb, wt);
117 
118  lsum += gPredict(
119  branch_pc, sh->imHist[scHistory->imliCount], imm,
120  imgehl, imnb, logImnb, wim);
121 
122  lsum += gPredict(
123  branch_pc, sh->imliCount, im, igehl, inb, logInb, wi);
124 
125  int thres = (updateThreshold>>3) + pUpdateThreshold[getIndUpd(branch_pc)]
126  + 12*((wb[getIndUpds(branch_pc)] >= 0) + (wp[getIndUpds(branch_pc)] >= 0)
127  + (ws[getIndUpds(branch_pc)] >= 0) + (wt[getIndUpds(branch_pc)] >= 0)
128  + (wl[getIndUpds(branch_pc)] >= 0) + (wbw[getIndUpds(branch_pc)] >= 0)
129  + (wi[getIndUpds(branch_pc)] >= 0));
130 
131  return thres;
132 }
133 
134 int
136 {
137  return (i >= (nbr - 2)) ? 1 : 0;
138 }
139 
140 void
142  const StaticInstPtr &inst, bool taken, BranchInfo* tage_bi,
143  Addr corrTarget)
144 {
145  int brtype = inst->isDirectCtrl() ? 0 : 2;
146  if (! inst->isUncondCtrl()) {
147  ++brtype;
148  }
149  // Non speculative SC histories update
150  if (brtype & 1) {
152  static_cast<SC_64KB_ThreadHistory *>(scHistory);
153  int64_t imliCount = sh->imliCount;
154  sh->imHist[imliCount] = (sh->imHist[imliCount] << 1)
155  + taken;
156  sh->updateLocalHistory(2, branch_pc, taken, branch_pc & 15);
157  sh->updateLocalHistory(3, branch_pc, taken);
158  }
159 
160  StatisticalCorrector::scHistoryUpdate(branch_pc, inst, taken, tage_bi,
161  corrTarget);
162 }
163 
164 void
166  bool taken, BranchInfo* bi, int64_t phist)
167 {
169  static_cast<SC_64KB_ThreadHistory *>(scHistory);
170 
171  gUpdate((pc << 1) + bi->predBeforeSC, taken, sh->bwHist, bwm,
172  bwgehl, bwnb, logBwnb, wbw, bi);
173 
174  gUpdate(pc, taken, phist, pm,
175  pgehl, pnb, logPnb, wp, bi);
176 
177  gUpdate(pc, taken, sh->getLocalHistory(1, pc), lm,
178  lgehl, lnb, logLnb, wl, bi);
179 
180  gUpdate(pc, taken, sh->getLocalHistory(2, pc), sm,
181  sgehl, snb, logSnb, ws, bi);
182 
183  gUpdate(pc, taken, sh->getLocalHistory(3, pc), tm,
184  tgehl, tnb, logTnb, wt, bi);
185 
186  gUpdate(pc, taken, sh->imHist[scHistory->imliCount], imm,
187  imgehl, imnb, logImnb, wim, bi);
188 
189  gUpdate(pc, taken, sh->imliCount, im,
190  igehl, inb, logInb, wi, bi);
191 }
192 
194 TAGE_SC_L_64KB_StatisticalCorrectorParams::create()
195 {
196  return new TAGE_SC_L_64KB_StatisticalCorrector(this);
197 }
198 
199 int
201 {
202  return index;
203 }
204 
205 uint16_t
207 {
208  // very similar to the TAGE implementation, but w/o shifting the pc
209  int tag = pc ^ threadHistory[tid].computeTags[0][bank].comp ^
210  (threadHistory[tid].computeTags[1][bank].comp << 1);
211 
212  return (tag & ((ULL(1) << tagTableTagWidths[bank]) - 1));
213 }
214 
215 void
217  bool alloc, bool taken, TAGEBase::BranchInfo* bi, int nrand)
218 {
219  if (! alloc) {
220  return;
221  }
222 
223  int penalty = 0;
224  int numAllocated = 0;
225  bool maxAllocReached = false;
226 
227  for (int I = calcDep(bi); I < nHistoryTables; I += 2) {
228  // Handle the 2-way associativity for allocation
229  for (int j = 0; j < 2; ++j) {
230  int i = ((j == 0) ? I : (I ^ 1)) + 1;
231  if (noSkip[i]) {
232  if (gtable[i][bi->tableIndices[i]].u == 0) {
233  int8_t ctr = gtable[i][bi->tableIndices[i]].ctr;
234  if (abs (2 * ctr + 1) <= 3) {
235  gtable[i][bi->tableIndices[i]].tag = bi->tableTags[i];
236  gtable[i][bi->tableIndices[i]].ctr = taken ? 0 : -1;
237  numAllocated++;
238  maxAllocReached = (numAllocated == maxNumAlloc);
239  I += 2;
240  break;
241  } else {
242  if (gtable[i][bi->tableIndices[i]].ctr > 0) {
243  gtable[i][bi->tableIndices[i]].ctr--;
244  } else {
245  gtable[i][bi->tableIndices[i]].ctr++;
246  }
247  }
248  } else {
249  penalty++;
250  }
251  }
252  }
253  if (maxAllocReached) {
254  break;
255  }
256  }
257 
258  tCounter += (penalty - 2 * numAllocated);
259 
260  handleUReset();
261 }
262 
263 void
266 {
267  if (bi->hitBank > 0) {
268  if (abs (2 * gtable[bi->hitBank][bi->hitBankIndex].ctr + 1) == 1) {
269  if (bi->longestMatchPred != taken) {
270  // acts as a protection
271  if (bi->altBank > 0) {
272  ctrUpdate(gtable[bi->altBank][bi->altBankIndex].ctr, taken,
274  }
275  if (bi->altBank == 0){
276  baseUpdate(branch_pc, taken, bi);
277  }
278  }
279  }
280 
281  ctrUpdate(gtable[bi->hitBank][bi->hitBankIndex].ctr, taken,
283 
284  //sign changes: no way it can have been useful
285  if (abs (2 * gtable[bi->hitBank][bi->hitBankIndex].ctr + 1) == 1) {
286  gtable[bi->hitBank][bi->hitBankIndex].u = 0;
287  }
288 
289  if (bi->altTaken == taken) {
290  if (bi->altBank > 0) {
291  int8_t ctr = gtable[bi->altBank][bi->altBankIndex].ctr;
292  if (abs (2 * ctr + 1) == 7) {
293  if (gtable[bi->hitBank][bi->hitBankIndex].u == 1) {
294  if (bi->longestMatchPred == taken) {
295  gtable[bi->hitBank][bi->hitBankIndex].u = 0;
296  }
297  }
298  }
299  }
300  }
301  } else {
302  baseUpdate(branch_pc, taken, bi);
303  }
304 
305  if ((bi->longestMatchPred != bi->altTaken) &&
306  (bi->longestMatchPred == taken) &&
307  (gtable[bi->hitBank][bi->hitBankIndex].u < (1 << tagTableUBits) -1)) {
308  gtable[bi->hitBank][bi->hitBankIndex].u++;
309  }
310 }
311 
313 TAGE_SC_L_TAGE_64KBParams::create()
314 {
315  return new TAGE_SC_L_TAGE_64KB(this);
316 }
317 
318 TAGE_SC_L_64KB::TAGE_SC_L_64KB(const TAGE_SC_L_64KBParams *params)
319  : TAGE_SC_L(params)
320 {
321 }
322 
324 TAGE_SC_L_64KBParams::create()
325 {
326  return new TAGE_SC_L_64KB(this);
327 }
TAGE_SC_L_64KB_StatisticalCorrector::snb
const unsigned snb
Definition: tage_sc_l_64KB.hh:82
TAGE_SC_L_TAGE_64KB::handleTAGEUpdate
void handleTAGEUpdate(Addr branch_pc, bool taken, TAGEBase::BranchInfo *bi) override
Handles the update of the TAGE entries.
Definition: tage_sc_l_64KB.cc:264
TAGEBase::tagTableTagWidths
std::vector< unsigned > tagTableTagWidths
Definition: tage_base.hh:425
TAGE_SC_L_64KB::TAGE_SC_L_64KB
TAGE_SC_L_64KB(const TAGE_SC_L_64KBParams *params)
Definition: tage_sc_l_64KB.cc:318
StaticInst::isDirectCtrl
bool isDirectCtrl() const
Definition: static_inst.hh:178
TAGE_SC_L_64KB_StatisticalCorrector::pgehl
std::vector< int8_t > * pgehl
Definition: tage_sc_l_64KB.hh:78
ArmISA::sh
Bitfield< 8, 7 > sh
Definition: miscregs_types.hh:654
TAGE_SC_L_64KB_StatisticalCorrector::sm
std::vector< int > sm
Definition: tage_sc_l_64KB.hh:84
TAGE_SC_L_64KB_StatisticalCorrector::tnb
const unsigned tnb
Definition: tage_sc_l_64KB.hh:89
TAGEBase::TageEntry::u
uint8_t u
Definition: tage_base.hh:72
TAGEBase::nHistoryTables
const unsigned nHistoryTables
Definition: tage_base.hh:417
MipsISA::index
Bitfield< 30, 0 > index
Definition: pra_constants.hh:44
TAGE_SC_L_64KB_StatisticalCorrector::ws
std::vector< int8_t > ws
Definition: tage_sc_l_64KB.hh:86
ArmISA::i
Bitfield< 7 > i
Definition: miscregs_types.hh:63
StatisticalCorrector::getIndUpds
unsigned getIndUpds(Addr branch_pc) const
Definition: statistical_corrector.cc:171
TAGE_SC_L_64KB_StatisticalCorrector::sgehl
std::vector< int8_t > * sgehl
Definition: tage_sc_l_64KB.hh:85
ThreadID
int16_t ThreadID
Thread index/ID type.
Definition: types.hh:227
TAGE_SC_L_64KB_StatisticalCorrector::makeThreadHistory
SCThreadHistory * makeThreadHistory() override
Definition: tage_sc_l_64KB.cc:70
TAGE_SC_L_64KB_StatisticalCorrector::wp
std::vector< int8_t > wp
Definition: tage_sc_l_64KB.hh:79
TAGE_SC_L_TAGE::calcDep
int calcDep(TAGEBase::BranchInfo *bi)
Definition: tage_sc_l.cc:305
TAGE_SC_L_64KB_StatisticalCorrector::imnb
const unsigned imnb
Definition: tage_sc_l_64KB.hh:96
TAGEBase::BranchInfo
Definition: tage_base.hh:120
TAGE_SC_L_64KB_StatisticalCorrector::gPredictions
int gPredictions(ThreadID tid, Addr branch_pc, BranchInfo *bi, int &lsum, int64_t phist) override
Definition: tage_sc_l_64KB.cc:93
TAGE_SC_L_TAGE_64KB::gtag
uint16_t gtag(ThreadID tid, Addr pc, int bank) const override
Computes the partial tag of a tagged table.
Definition: tage_sc_l_64KB.cc:206
StatisticalCorrector::logInb
const unsigned logInb
Definition: statistical_corrector.hh:157
TAGEBase::maxNumAlloc
unsigned maxNumAlloc
Definition: tage_base.hh:472
StatisticalCorrector::lgehl
std::vector< int8_t > * lgehl
Definition: statistical_corrector.hh:152
TAGE_SC_L_64KB_StatisticalCorrector::tm
std::vector< int > tm
Definition: tage_sc_l_64KB.hh:91
TAGE_SC_L_64KB_StatisticalCorrector::getIndBiasBank
unsigned getIndBiasBank(Addr branch_pc, BranchInfo *bi, int hitBank, int altBank) const override
Definition: tage_sc_l_64KB.cc:84
StatisticalCorrector::pUpdateThreshold
std::vector< int > pUpdateThreshold
Definition: statistical_corrector.hh:169
TAGEBase::noSkip
std::vector< bool > noSkip
Definition: tage_base.hh:477
StatisticalCorrector::numEntriesFirstLocalHistories
const unsigned numEntriesFirstLocalHistories
Definition: statistical_corrector.hh:139
TAGE_SC_L_64KB_StatisticalCorrector::wt
std::vector< int8_t > wt
Definition: tage_sc_l_64KB.hh:93
StatisticalCorrector::getIndUpd
virtual unsigned getIndUpd(Addr branch_pc) const
Definition: statistical_corrector.cc:165
TAGE_SC_L_64KB_StatisticalCorrector::gIndexLogsSubstr
int gIndexLogsSubstr(int nbr, int i) override
Definition: tage_sc_l_64KB.cc:135
tage_sc_l_64KB.hh
StatisticalCorrector::wi
std::vector< int8_t > wi
Definition: statistical_corrector.hh:160
StatisticalCorrector::SCThreadHistory
Definition: statistical_corrector.hh:69
StatisticalCorrector::logLnb
const unsigned logLnb
Definition: statistical_corrector.hh:150
StatisticalCorrector::bwgehl
std::vector< int8_t > * bwgehl
Definition: statistical_corrector.hh:145
TAGEBase::threadHistory
std::vector< ThreadHistory > threadHistory
Definition: tage_base.hh:455
PowerISA::bi
Bitfield< 20, 16 > bi
Definition: types.hh:63
ArmISA::j
Bitfield< 24 > j
Definition: miscregs_types.hh:54
TAGE_SC_L_64KB_StatisticalCorrector::pm
std::vector< int > pm
Definition: tage_sc_l_64KB.hh:77
TAGEBase::tCounter
int64_t tCounter
Definition: tage_base.hh:467
TAGE_SC_L_64KB_StatisticalCorrector::tgehl
std::vector< int8_t > * tgehl
Definition: tage_sc_l_64KB.hh:92
ArmISA::imm
Bitfield< 7, 0 > imm
Definition: types.hh:141
MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:240
TAGE_SC_L_64KB_StatisticalCorrector::gUpdates
void gUpdates(ThreadID tid, Addr pc, bool taken, BranchInfo *bi, int64_t phist) override
Definition: tage_sc_l_64KB.cc:165
StatisticalCorrector::gUpdate
virtual void gUpdate(Addr branch_pc, bool taken, int64_t hist, std::vector< int > &length, std::vector< int8_t > *tab, int nbr, int logs, std::vector< int8_t > &w, BranchInfo *bi)
Definition: statistical_corrector.cc:203
StatisticalCorrector::wbw
std::vector< int8_t > wbw
Definition: statistical_corrector.hh:146
StatisticalCorrector::lm
std::vector< int > lm
Definition: statistical_corrector.hh:151
TAGE_SC_L
Definition: tage_sc_l.hh:148
TAGE_SC_L_TAGE::handleUReset
void handleUReset() override
Handles the U bits reset.
Definition: tage_sc_l.cc:316
TAGEBase::baseUpdate
void baseUpdate(Addr pc, bool taken, BranchInfo *bi)
Updates the bimodal predictor.
Definition: tage_base.cc:296
TAGEBase::TageEntry::ctr
int8_t ctr
Definition: tage_base.hh:70
StatisticalCorrector::im
std::vector< int > im
Definition: statistical_corrector.hh:158
TAGE_SC_L_64KB_StatisticalCorrector::logSnb
const unsigned logSnb
Definition: tage_sc_l_64KB.hh:83
TAGE_SC_L_64KB_StatisticalCorrector::TAGE_SC_L_64KB_StatisticalCorrector
TAGE_SC_L_64KB_StatisticalCorrector(TAGE_SC_L_64KB_StatisticalCorrectorParams *p)
Definition: tage_sc_l_64KB.cc:44
TAGEBase::tagTableCounterBits
const unsigned tagTableCounterBits
Definition: tage_base.hh:418
TAGE_SC_L_TAGE_64KB::gindex_ext
int gindex_ext(int index, int bank) const override
Definition: tage_sc_l_64KB.cc:200
StatisticalCorrector::scHistory
SCThreadHistory * scHistory
Definition: statistical_corrector.hh:132
TAGE_SC_L_64KB
Definition: tage_sc_l_64KB.hh:128
TAGE_SC_L_64KB_StatisticalCorrector::imgehl
std::vector< int8_t > * imgehl
Definition: tage_sc_l_64KB.hh:99
StatisticalCorrector::updateThreshold
int updateThreshold
Definition: statistical_corrector.hh:168
TAGEBase::TageEntry::tag
uint16_t tag
Definition: tage_base.hh:71
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
TAGE_SC_L_64KB_StatisticalCorrector::numEntriesSecondLocalHistories
const unsigned numEntriesSecondLocalHistories
Definition: tage_sc_l_64KB.hh:71
StatisticalCorrector::scHistoryUpdate
virtual void scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken, BranchInfo *tage_bi, Addr corrTarget)
Definition: statistical_corrector.cc:289
StatisticalCorrector::initGEHLTable
void initGEHLTable(unsigned numLenghts, std::vector< int > lengths, std::vector< int8_t > *&table, unsigned logNumEntries, std::vector< int8_t > &w, int8_t wInitValue)
Definition: statistical_corrector.cc:128
TAGE_SC_L_64KB_StatisticalCorrector::logImnb
const unsigned logImnb
Definition: tage_sc_l_64KB.hh:97
TAGEBase::ctrUpdate
static void ctrUpdate(T &ctr, bool taken, int nbits)
Updates a direction counter based on the actual branch outcome.
Definition: tage_base.cc:255
StatisticalCorrector::inb
const unsigned inb
Definition: statistical_corrector.hh:156
StatisticalCorrector::wl
std::vector< int8_t > wl
Definition: statistical_corrector.hh:153
TAGEBase::gtable
TageEntry ** gtable
Definition: tage_base.hh:430
TAGE_SC_L_64KB_StatisticalCorrector::numEntriesThirdLocalHistories
const unsigned numEntriesThirdLocalHistories
Definition: tage_sc_l_64KB.hh:72
StatisticalCorrector::SCThreadHistory::imliCount
int64_t imliCount
Definition: statistical_corrector.hh:76
TAGE_SC_L_64KB_StatisticalCorrector::wim
std::vector< int8_t > wim
Definition: tage_sc_l_64KB.hh:100
StatisticalCorrector::logBwnb
const unsigned logBwnb
Definition: statistical_corrector.hh:143
StatisticalCorrector::BranchInfo
Definition: statistical_corrector.hh:192
StatisticalCorrector::igehl
std::vector< int8_t > * igehl
Definition: statistical_corrector.hh:159
TAGE_SC_L_64KB_StatisticalCorrector::logPnb
const unsigned logPnb
Definition: tage_sc_l_64KB.hh:76
TAGE_SC_L_64KB_StatisticalCorrector::scHistoryUpdate
void scHistoryUpdate(Addr branch_pc, const StaticInstPtr &inst, bool taken, BranchInfo *tage_bi, Addr corrTarget) override
Definition: tage_sc_l_64KB.cc:141
TAGE_SC_L_TAGE_64KB
Definition: tage_sc_l_64KB.hh:53
TAGE_SC_L_TAGE_64KB::handleAllocAndUReset
void handleAllocAndUReset(bool alloc, bool taken, TAGEBase::BranchInfo *bi, int nrand) override
Handles Allocation and U bits reset on an update.
Definition: tage_sc_l_64KB.cc:216
TAGE_SC_L_64KB_StatisticalCorrector::imm
std::vector< int > imm
Definition: tage_sc_l_64KB.hh:98
StatisticalCorrector
Definition: statistical_corrector.hh:52
StatisticalCorrector::gPredict
int gPredict(Addr branch_pc, int64_t hist, std::vector< int > &length, std::vector< int8_t > *tab, int nbr, int logs, std::vector< int8_t > &w)
Definition: statistical_corrector.cc:187
StatisticalCorrector::logBias
const unsigned logBias
Definition: statistical_corrector.hh:134
TAGEBase::tagTableUBits
const unsigned tagTableUBits
Definition: tage_base.hh:419
StatisticalCorrector::lnb
const unsigned lnb
Definition: statistical_corrector.hh:149
RefCountingPtr< StaticInst >
StatisticalCorrector::bwnb
const unsigned bwnb
Definition: statistical_corrector.hh:142
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
TAGE_SC_L_64KB_StatisticalCorrector::SC_64KB_ThreadHistory
Definition: tage_sc_l_64KB.hh:102
TAGE_SC_L_64KB_StatisticalCorrector::logTnb
const unsigned logTnb
Definition: tage_sc_l_64KB.hh:90
MipsISA::sm
Bitfield< 1 > sm
Definition: pra_constants.hh:270
TAGE_SC_L_64KB_StatisticalCorrector::pnb
const unsigned pnb
Definition: tage_sc_l_64KB.hh:75
ULL
#define ULL(N)
uint64_t constant
Definition: types.hh:50
StaticInst::isUncondCtrl
bool isUncondCtrl() const
Definition: static_inst.hh:181
TAGE_SC_L_64KB_StatisticalCorrector
Definition: tage_sc_l_64KB.hh:69
StatisticalCorrector::wb
std::vector< int8_t > wb
Definition: statistical_corrector.hh:166
StatisticalCorrector::bwm
std::vector< int > bwm
Definition: statistical_corrector.hh:144

Generated on Wed Sep 30 2020 14:02:09 for gem5 by doxygen 1.8.17