1/* 2 * Copyright (c) 2014 The University of Wisconsin 3 * 4 * Copyright (c) 2006 INRIA (Institut National de Recherche en 5 * Informatique et en Automatique / French National Research Institute 6 * for Computer Science and Applied Mathematics) 7 * 8 * All rights reserved. --- 121 unchanged lines hidden (view full) --- 130 { 131 int pathHist; 132 int ptGhist; 133 int hitBank; 134 int hitBankIndex; 135 int altBank; 136 int altBankIndex; 137 int bimodalIndex; |
138 uint16_t loopTag; |
139 uint16_t currentIter; 140 141 bool tagePred; 142 bool altTaken; 143 bool loopPred; 144 bool loopPredValid; 145 int loopIndex; 146 int loopHit; --- 86 unchanged lines hidden (view full) --- 233 * branch outcome. 234 * @param ctr Reference to counter to update. 235 * @param taken Actual branch outcome. 236 * @param nbits Counter width. 237 */ 238 void ctrUpdate(int8_t & ctr, bool taken, int nbits); 239 240 /** |
241 * Updates an unsigned counter based on up/down parameter 242 * @param ctr Reference to counter to update. 243 * @param up Boolean indicating if the counter is incremented/decremented 244 * If true it is incremented, if false it is decremented 245 * @param nbits Counter width. 246 */ 247 void unsignedCtrUpdate(uint8_t & ctr, bool up, unsigned nbits); 248 249 /** |
250 * Get a branch prediction from the bimodal 251 * predictor. 252 * @param pc The unshifted branch PC. 253 * @param bi Pointer to information on the 254 * prediction. 255 */ 256 bool getBimodePred(Addr pc, BranchInfo* bi) const; 257 --- 101 unchanged lines hidden (view full) --- 359 const unsigned logSizeTagTables; 360 const unsigned logSizeLoopPred; 361 const unsigned nHistoryTables; 362 const unsigned tagTableCounterBits; 363 const unsigned histBufferSize; 364 const unsigned minHist; 365 const unsigned maxHist; 366 const unsigned minTagWidth; |
367 const unsigned loopTableAgeBits; 368 const unsigned loopTableConfidenceBits; 369 const unsigned loopTableTagBits; 370 const unsigned loopTableIterBits; |
371 |
372 const uint8_t confidenceThreshold; 373 const uint16_t loopTagMask; 374 const uint16_t loopNumIterMask; 375 |
376 std::vector<bool> btablePrediction; 377 std::vector<bool> btableHysteresis; 378 TageEntry **gtable; 379 LoopEntry *ltable; 380 381 // Keep per-thread histories to 382 // support SMT. 383 struct ThreadHistory { --- 35 unchanged lines hidden --- |