55 os <<
"UnpredictedBranch";
58 os <<
"BranchPrediction";
61 os <<
"CorrectlyPredictedBranch";
64 os <<
"BadlyPredictedBranch";
67 os <<
"BadlyPredictedBranchTarget";
73 os <<
"SuspendThread";
147 <<
";0x" << std::hex <<
target->instAddr() << std::dec
156 os << branch.
reason <<
" target: 0x"
157 << std::hex << branch.
target->instAddr() << std::dec
158 <<
' ' << *branch.
inst
182 line =
new uint8_t[width_];
228 numInsts(
width), threadId(tid)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
T * getPtr()
get a pointer to the data ptr.
RequestPtr req
A pointer to the original request.
Forward data betwen Execute and Fetch1 carrying change-of-address/stream information.
MinorDynInstPtr inst
Instruction which caused this branch.
InstSeqNum newStreamSeqNum
Sequence number of new stream/prediction to be adopted.
@ BadlyPredictedBranchTarget
@ CorrectlyPredictedBranch
Reason reason
Explanation for this branch.
InstSeqNum newPredictionSeqNum
bool isStreamChange() const
As static isStreamChange but on this branch data.
bool isBranch() const
As static isBranch but on this branch data.
void reportData(std::ostream &os) const
ReportIF interface.
std::unique_ptr< PCStateBase > target
Starting PC of that stream.
Forward flowing data between Fetch2,Decode,Execute carrying a packet of instructions of a width appro...
ForwardInstData(unsigned int width=0, ThreadID tid=InvalidThreadID)
ForwardInstData & operator=(const ForwardInstData &src)
Copy the inst array only as far as numInsts.
void resize(unsigned int width)
Resize a bubble/empty ForwardInstData and fill with bubbles.
bool isBubble() const
BubbleIF interface.
unsigned int numInsts
The number of insts slots that can be expected to be valid insts.
void reportData(std::ostream &os) const
ReportIF interface.
MinorDynInstPtr insts[MAX_FORWARD_INSTS]
Array of carried insts, ref counted.
void bubbleFill()
Fill with bubbles from 0 to width() - 1.
unsigned int width() const
Number of instructions carried by this object.
void setFault(Fault fault_)
Set fault and possible clear the bubble flag.
void adoptPacketData(Packet *packet)
Use the data from a packet as line instead of allocating new space.
unsigned int lineWidth
Explicit line width, don't rely on data.size.
bool bubbleFlag
This line is a bubble.
void freeLine()
Free this ForwardLineData line.
Packet * packet
Packet from which the line is taken.
void reportData(std::ostream &os) const
ReportIF interface.
InstId id
Thread, stream, prediction ... id of this line.
bool isFault() const
This is a fault, not a line.
void allocateLine(unsigned int width_)
In-place initialise a ForwardLineData, freeing and overridding the line.
Fault fault
This line has a fault.
static MinorDynInstPtr bubble()
There is a single bubble inst.
const unsigned int MAX_FORWARD_INSTS
Maximum number of instructions that can be carried by the pipeline.
std::ostream & operator<<(std::ostream &os, const InstId &id)
Print this id in the usual slash-separated format expected by MinorTrace.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::shared_ptr< FaultBase > Fault
int16_t ThreadID
Thread index/ID type.
constexpr decltype(nullptr) NoFault
Minor contains all the definitions within the MinorCPU apart from the CPU class itself.
Contains class definitions for data flowing between pipeline stages in the top-level structure portio...