45#ifndef __CPU_MINOR_DECODE_HH__
46#define __CPU_MINOR_DECODE_HH__
143 const BaseMinorCPUParams ¶ms,
Classes for buffer, queue and FIFO behaviour.
MinorCPU is an in-order CPU model with four fixed pipeline stages:
Interface for things with names.
virtual std::string name() const
void evaluate()
Pass on input/buffer data to the output if you can.
bool isDrained()
Is this stage drained? For Decoed, draining is initiated by Execute halting Fetch1 causing Fetch2 to ...
std::vector< InputBuffer< ForwardInstData > > inputBuffer
const ForwardInstData * getInput(ThreadID tid)
Get a piece of data to work on, or 0 if there is no data.
void popInput(ThreadID tid)
Pop an element off the input buffer, if there are any.
std::vector< InputBuffer< ForwardInstData > > & nextStageReserve
Interface to reserve space in the next stage.
Latch< ForwardInstData >::Output inp
Input port carrying macro instructions from Fetch2.
std::vector< DecodeThreadInfo > decodeInfo
unsigned int outputWidth
Width of output of this stage/input of next in instructions.
Decode(const std::string &name, MinorCPU &cpu_, const BaseMinorCPUParams ¶ms, Latch< ForwardInstData >::Output inp_, Latch< ForwardInstData >::Input out_, std::vector< InputBuffer< ForwardInstData > > &next_stage_input_buffer)
Latch< ForwardInstData >::Input out
Output port carrying micro-op decomposed instructions to Execute.
ThreadID getScheduledThread()
Use the current threading policy to determine the next thread to decode from.
MinorCPU & cpu
Pointer back to the containing CPU.
bool processMoreThanOneInput
If true, more than one input word can be processed each cycle if there is room in the output to conta...
Forward flowing data between Fetch2,Decode,Execute carrying a packet of instructions of a width appro...
static const InstSeqNum firstExecSeqNum
Top level definition of the Minor in-order CPU model.
The dynamic instruction and instruction/line id (sequence numbers) definition for Minor.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
int16_t ThreadID
Thread index/ID type.
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...
Data members after this line are cycle-to-cycle state.
InstSeqNum execSeqNum
Source of execSeqNums to number instructions.
bool blocked
Blocked indication for report.
bool inMacroop
True when we're in the process of decomposing a micro-op and microopPC will be valid.
std::unique_ptr< PCStateBase > microopPC
unsigned int inputIndex
Index into the inputBuffer's head marking the start of unhandled instructions.
DecodeThreadInfo(const DecodeThreadInfo &other)