gem5
|
#include <indirect.hh>
Classes | |
struct | HistoryEntry |
struct | IPredEntry |
struct | ThreadInfo |
Public Member Functions | |
IndirectPredictor (bool hash_ghr, bool hash_targets, unsigned num_sets, unsigned num_ways, unsigned tag_bits, unsigned path_len, unsigned inst_shift, unsigned num_threads) | |
bool | lookup (Addr br_addr, unsigned ghr, TheISA::PCState &br_target, ThreadID tid) |
void | recordIndirect (Addr br_addr, Addr tgt_addr, InstSeqNum seq_num, ThreadID tid) |
void | commit (InstSeqNum seq_num, ThreadID tid) |
void | squash (InstSeqNum seq_num, ThreadID tid) |
void | recordTarget (InstSeqNum seq_num, unsigned ghr, const TheISA::PCState &target, ThreadID tid) |
Private Member Functions | |
Addr | getSetIndex (Addr br_addr, unsigned ghr, ThreadID tid) |
Addr | getTag (Addr br_addr) |
Private Attributes | |
const bool | hashGHR |
const bool | hashTargets |
const unsigned | numSets |
const unsigned | numWays |
const unsigned | tagBits |
const unsigned | pathLength |
const unsigned | instShift |
std::vector< std::vector < IPredEntry > > | targetCache |
std::vector< ThreadInfo > | threadInfo |
Definition at line 40 of file indirect.hh.
IndirectPredictor::IndirectPredictor | ( | bool | hash_ghr, |
bool | hash_targets, | ||
unsigned | num_sets, | ||
unsigned | num_ways, | ||
unsigned | tag_bits, | ||
unsigned | path_len, | ||
unsigned | inst_shift, | ||
unsigned | num_threads | ||
) |
Definition at line 36 of file indirect.cc.
References ArmISA::i, isPowerOf2(), numSets, numWays, panic, targetCache, and threadInfo.
void IndirectPredictor::commit | ( | InstSeqNum | seq_num, |
ThreadID | tid | ||
) |
Definition at line 88 of file indirect.cc.
References DPRINTF, IndirectPredictor::ThreadInfo::headHistEntry, IndirectPredictor::ThreadInfo::pathHist, pathLength, and threadInfo.
Referenced by BPredUnit::update().
Definition at line 162 of file indirect.cc.
References floorLog2(), hashGHR, hashTargets, ArmISA::i, instShift, numSets, MipsISA::p, IndirectPredictor::ThreadInfo::pathHist, pathLength, and threadInfo.
Referenced by lookup(), and recordTarget().
Definition at line 182 of file indirect.cc.
References instShift, and tagBits.
Referenced by lookup(), and recordTarget().
bool IndirectPredictor::lookup | ( | Addr | br_addr, |
unsigned | ghr, | ||
TheISA::PCState & | br_target, | ||
ThreadID | tid | ||
) |
Definition at line 57 of file indirect.cc.
References DPRINTF, getSetIndex(), getTag(), numSets, and targetCache.
Referenced by BPredUnit::predict().
void IndirectPredictor::recordIndirect | ( | Addr | br_addr, |
Addr | tgt_addr, | ||
InstSeqNum | seq_num, | ||
ThreadID | tid | ||
) |
Definition at line 79 of file indirect.cc.
References DPRINTF, and threadInfo.
Referenced by BPredUnit::predict().
void IndirectPredictor::recordTarget | ( | InstSeqNum | seq_num, |
unsigned | ghr, | ||
const TheISA::PCState & | target, | ||
ThreadID | tid | ||
) |
Definition at line 126 of file indirect.cc.
References DPRINTF, getSetIndex(), getTag(), numSets, numWays, IndirectPredictor::ThreadInfo::pathHist, targetCache, and threadInfo.
Referenced by BPredUnit::squash().
void IndirectPredictor::squash | ( | InstSeqNum | seq_num, |
ThreadID | tid | ||
) |
Definition at line 106 of file indirect.cc.
References DPRINTF, IndirectPredictor::ThreadInfo::pathHist, and threadInfo.
Referenced by BPredUnit::squash().
|
private |
Definition at line 57 of file indirect.hh.
Referenced by getSetIndex().
|
private |
Definition at line 58 of file indirect.hh.
Referenced by getSetIndex().
|
private |
Definition at line 63 of file indirect.hh.
Referenced by getSetIndex(), and getTag().
|
private |
Definition at line 59 of file indirect.hh.
Referenced by getSetIndex(), IndirectPredictor(), lookup(), and recordTarget().
|
private |
Definition at line 60 of file indirect.hh.
Referenced by IndirectPredictor(), and recordTarget().
|
private |
Definition at line 62 of file indirect.hh.
Referenced by commit(), and getSetIndex().
|
private |
Definition at line 61 of file indirect.hh.
Referenced by getTag().
|
private |
Definition at line 72 of file indirect.hh.
Referenced by IndirectPredictor(), lookup(), and recordTarget().
|
private |
Definition at line 94 of file indirect.hh.
Referenced by commit(), getSetIndex(), IndirectPredictor(), recordIndirect(), recordTarget(), and squash().