|
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().