ltage.hh (13443:a111cb197897) ltage.hh (13444:26f81be73cb7)
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.

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

349 * iteration count.
350 * @param pc The unshifted branch PC.
351 * @param taken The predicted branch outcome.
352 * @param bi Pointer to information on the prediction
353 * recorded at prediction time.
354 */
355 void specLoopUpdate(Addr pc, bool taken, BranchInfo* bi);
356
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.

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

349 * iteration count.
350 * @param pc The unshifted branch PC.
351 * @param taken The predicted branch outcome.
352 * @param bi Pointer to information on the prediction
353 * recorded at prediction time.
354 */
355 void specLoopUpdate(Addr pc, bool taken, BranchInfo* bi);
356
357 const unsigned logSizeBiMP;
358 const unsigned logRatioBiModalHystEntries;
357 const unsigned logRatioBiModalHystEntries;
359 const unsigned logSizeTagTables;
360 const unsigned logSizeLoopPred;
361 const unsigned nHistoryTables;
362 const unsigned tagTableCounterBits;
363 const unsigned tagTableUBits;
364 const unsigned histBufferSize;
365 const unsigned minHist;
366 const unsigned maxHist;
358 const unsigned logSizeLoopPred;
359 const unsigned nHistoryTables;
360 const unsigned tagTableCounterBits;
361 const unsigned tagTableUBits;
362 const unsigned histBufferSize;
363 const unsigned minHist;
364 const unsigned maxHist;
367 const unsigned minTagWidth;
365 const unsigned pathHistBits;
368 const unsigned loopTableAgeBits;
369 const unsigned loopTableConfidenceBits;
370 const unsigned loopTableTagBits;
371 const unsigned loopTableIterBits;
366 const unsigned loopTableAgeBits;
367 const unsigned loopTableConfidenceBits;
368 const unsigned loopTableTagBits;
369 const unsigned loopTableIterBits;
372
370 const unsigned logLoopTableAssoc;
373 const uint8_t confidenceThreshold;
374 const uint16_t loopTagMask;
375 const uint16_t loopNumIterMask;
376
371 const uint8_t confidenceThreshold;
372 const uint16_t loopTagMask;
373 const uint16_t loopNumIterMask;
374
375 const std::vector<unsigned> tagTableTagWidths;
376 const std::vector<int> logTagTableSizes;
377
377 std::vector<bool> btablePrediction;
378 std::vector<bool> btableHysteresis;
379 TageEntry **gtable;
380 LoopEntry *ltable;
381
382 // Keep per-thread histories to
383 // support SMT.
384 struct ThreadHistory {

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

399
400 // Speculative folded histories.
401 FoldedHistory *computeIndices;
402 FoldedHistory *computeTags[2];
403 };
404
405 std::vector<ThreadHistory> threadHistory;
406
378 std::vector<bool> btablePrediction;
379 std::vector<bool> btableHysteresis;
380 TageEntry **gtable;
381 LoopEntry *ltable;
382
383 // Keep per-thread histories to
384 // support SMT.
385 struct ThreadHistory {

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

400
401 // Speculative folded histories.
402 FoldedHistory *computeIndices;
403 FoldedHistory *computeTags[2];
404 };
405
406 std::vector<ThreadHistory> threadHistory;
407
407 int tagWidths[15];
408 int tagTableSizes[15];
409 int *histLengths;
410 int *tableIndices;
411 int *tableTags;
412
413 int8_t loopUseCounter;
414 int8_t useAltPredForNewlyAllocated;
408 int *histLengths;
409 int *tableIndices;
410 int *tableTags;
411
412 int8_t loopUseCounter;
413 int8_t useAltPredForNewlyAllocated;
415 int tCounter;
416 int logTick;
414 uint64_t tCounter;
415 uint64_t logUResetPeriod;
416 unsigned useAltOnNaBits;
417 unsigned withLoopBits;
417};
418
419#endif // __CPU_PRED_LTAGE
418};
419
420#endif // __CPU_PRED_LTAGE