|
gem5
|
Minor contains all the definitions within the MinorCPU apart from the CPU class itself. More...
Classes | |
| class | MinorActivityRecorder |
| ActivityRecorder with a Ticked interface. More... | |
| class | ReportIF |
| Interface class for data with reporting/tracing facilities. More... | |
| class | BubbleIF |
| Interface class for data with 'bubble' values. More... | |
| class | ReportTraitsAdaptor |
| ...ReportTraits are trait classes with the same functionality as ReportIF, but with elements explicitly passed into the report... More... | |
| class | ReportTraitsPtrAdaptor |
| A similar adaptor but for elements held by pointer ElemType should implement ReportIF. More... | |
| class | NoBubbleTraits |
| ... More... | |
| class | BubbleTraitsAdaptor |
| Pass on call to the element. More... | |
| class | BubbleTraitsPtrAdaptor |
| Pass on call to the element where the element is a pointer. More... | |
| class | MinorBuffer |
| TimeBuffer with MinorTrace and Named interfaces. More... | |
| class | Latch |
| Wraps a MinorBuffer with Input/Output interfaces to ensure that units within the model can only see the right end of buffers between them. More... | |
| class | SelfStallingPipeline |
| A pipeline simulating class that will stall (not advance when advance() is called) if a non-bubble value lies at the far end of the pipeline. More... | |
| class | Reservable |
| Base class for space reservation requestable objects. More... | |
| class | Queue |
| Wrapper for a queue type to act as a pipeline stage input queue. More... | |
| class | InputBuffer |
| Like a Queue but with a restricted interface and a setTail function which, when the queue is empty, just takes a reference to the pushed item as the single element. More... | |
| class | Decode |
| class | InstId |
| Id for lines and instructions. More... | |
| class | MinorDynInst |
| Dynamic instruction for Minor. More... | |
| class | ExecContext |
| ExecContext bears the exec_context interface for Minor. More... | |
| class | Execute |
| Execute stage. More... | |
| class | Fetch1 |
| A stage responsible for fetching "lines" from memory and passing them to Fetch2. More... | |
| class | Fetch2 |
| This stage receives lines of data from Fetch1, separates them into instructions and passes them to Decode. More... | |
| class | QueuedInst |
| Container class to box instructions in the FUs to make those queues have correct bubble behaviour when stepped. More... | |
| class | FUPipeline |
| A functional unit configured from a MinorFU object. More... | |
| class | LSQ |
| class | BranchData |
| Forward data betwen Execute and Fetch1 carrying change-of-address/stream information. More... | |
| class | ForwardLineData |
| Line fetch data in the forward direction. More... | |
| class | ForwardInstData |
| Forward flowing data between Fetch2,Decode,Execute carrying a packet of instructions of a width appropriate to the configured stage widths. More... | |
| class | Pipeline |
| The constructed pipeline. More... | |
| class | Scoreboard |
| A scoreboard of register dependencies including, for each register: The number of in-flight instructions which will generate a result for this register. More... | |
| class | MinorStats |
| Currently unused stats class. More... | |
Typedefs | |
| typedef SimpleThread | MinorThread |
| Minor will use the SimpleThread state for now. More... | |
| typedef RefCountingPtr < MinorDynInst > | MinorDynInstPtr |
| MinorDynInsts are currently reference counted. More... | |
| typedef SelfStallingPipeline < QueuedInst, ReportTraitsAdaptor < QueuedInst > > | FUPipelineBase |
| Functional units have pipelines which stall when an inst gets to their ends allowing Execute::commit to pick up timing-completed insts when it feels like it. More... | |
Functions | |
| std::ostream & | operator<< (std::ostream &os, const InstId &id) |
| Print this id in the usual slash-separated format expected by MinorTrace. More... | |
| std::ostream & | operator<< (std::ostream &os, const MinorDynInst &inst) |
| Print a short reference to this instruction. More... | |
| static void | printRegName (std::ostream &os, TheISA::RegIndex reg) |
| Print a register in the form r<n>, f<n>, m<n>(<name>), z for integer, float, misc and zero registers given an 'architectural register number'. More... | |
| unsigned int | cyclicIndexInc (unsigned int index, unsigned int cycle_size) |
| Increment a cyclic buffer index for indices [0, cycle_size-1]. More... | |
| unsigned int | cyclicIndexDec (unsigned int index, unsigned int cycle_size) |
| Decrement a cyclic buffer index for indices [0, cycle_size-1]. More... | |
| std::ostream & | operator<< (std::ostream &os, Execute::DrainState state) |
| std::ostream & | operator<< (std::ostream &os, Fetch1::IcacheState state) |
| std::ostream & | operator<< (std::ostream &os, Fetch1::FetchState state) |
| static Addr | addrBlockOffset (Addr addr, unsigned int block_size) |
| Returns the offset of addr into an aligned a block of size block_size. More... | |
| static bool | transferNeedsBurst (Addr addr, unsigned int size, unsigned int block_size) |
| Returns true if the given [addr . More... | |
| std::ostream & | operator<< (std::ostream &os, LSQ::AddrRangeCoverage coverage) |
| std::ostream & | operator<< (std::ostream &os, LSQ::LSQRequest::LSQRequestState state) |
| PacketPtr | makePacketForRequest (Request &request, bool isLoad, Packet::SenderState *sender_state=NULL, PacketDataPtr data=NULL) |
| Make a suitable packet for the given request. More... | |
| std::ostream & | operator<< (std::ostream &os, LSQ::MemoryState state) |
| std::ostream & | operator<< (std::ostream &os, BranchData::Reason reason) |
| Print a branch reason enum. More... | |
| std::ostream & | operator<< (std::ostream &os, const BranchData &branch) |
| Print BranchData contents in a format suitable for DPRINTF comments, not for MinorTrace. More... | |
| static TheISA::RegIndex | flattenRegIndex (TheISA::RegIndex reg, ThreadContext *thread_context) |
| Flatten a RegIndex, irrespective of what reg type it's pointing to. More... | |
Variables | |
| const unsigned int | MAX_FORWARD_INSTS = 16 |
| Maximum number of instructions that can be carried by the pipeline. More... | |
Functional units have pipelines which stall when an inst gets to their ends allowing Execute::commit to pick up timing-completed insts when it feels like it.
Definition at line 221 of file func_unit.hh.
MinorDynInsts are currently reference counted.
Definition at line 63 of file dyn_inst.hh.
| typedef SimpleThread Minor::MinorThread |
Minor will use the SimpleThread state for now.
Returns the offset of addr into an aligned a block of size block_size.
Definition at line 59 of file lsq.cc.
Referenced by Minor::LSQ::SplitDataRequest::makeFragmentRequests(), and transferNeedsBurst().
|
inline |
Decrement a cyclic buffer index for indices [0, cycle_size-1].
Definition at line 512 of file execute.cc.
|
inline |
Increment a cyclic buffer index for indices [0, cycle_size-1].
Definition at line 500 of file execute.cc.
|
static |
Flatten a RegIndex, irrespective of what reg type it's pointing to.
Definition at line 87 of file scoreboard.cc.
References CCRegClass, ThreadContext::flattenCCIndex(), ThreadContext::flattenFloatIndex(), ThreadContext::flattenIntIndex(), FloatRegClass, IntRegClass, MiscRegClass, X86ISA::reg, and regIdxToClass().
Referenced by Minor::Scoreboard::canInstIssue(), Minor::Scoreboard::execSeqNumToWaitFor(), and Minor::Scoreboard::markupInstDests().
| PacketPtr Minor::makePacketForRequest | ( | Request & | request, |
| bool | isLoad, | ||
| Packet::SenderState * | sender_state = NULL, |
||
| PacketDataPtr | data = NULL |
||
| ) |
Make a suitable packet for the given request.
If the request is a store, data will be the payload data. If sender_state is NULL, it won't be pushed into the packet as senderState
Definition at line 1555 of file lsq.cc.
References Packet::allocate(), Packet::createRead(), Packet::createWrite(), Packet::dataDynamic(), and Packet::pushSenderState().
Referenced by Minor::LSQ::SplitDataRequest::makeFragmentPackets(), and Minor::LSQ::LSQRequest::makePacket().
| std::ostream & Minor::operator<< | ( | std::ostream & | os, |
| BranchData::Reason | reason | ||
| ) |
Print a branch reason enum.
Definition at line 46 of file pipe_data.cc.
References Minor::BranchData::BadlyPredictedBranch, Minor::BranchData::BadlyPredictedBranchTarget, Minor::BranchData::BranchPrediction, Minor::BranchData::CorrectlyPredictedBranch, Minor::BranchData::HaltFetch, Minor::BranchData::Interrupt, Minor::BranchData::NoBranch, X86ISA::os, Minor::BranchData::SuspendThread, and Minor::BranchData::UnpredictedBranch.
| std::ostream & Minor::operator<< | ( | std::ostream & | os, |
| const InstId & | id | ||
| ) |
Print this id in the usual slash-separated format expected by MinorTrace.
Definition at line 63 of file dyn_inst.cc.
References X86ISA::os.
| std::ostream & Minor::operator<< | ( | std::ostream & | os, |
| const MinorDynInst & | inst | ||
| ) |
Print a short reference to this instruction.
Print a summary of the instruction.
'-' for a bubble and a series of '/' separated sequence numbers for other instructions. The sequence numbers will be in the order: stream, prediction, line, fetch, exec with exec absent if it is 0. This is used by MinorTrace.
Definition at line 116 of file dyn_inst.cc.
References Minor::MinorDynInst::fault, StaticInst::getName(), Minor::MinorDynInst::id, Minor::MinorDynInst::isFault(), X86ISA::os, Minor::MinorDynInst::pc, and Minor::MinorDynInst::staticInst.
| std::ostream & Minor::operator<< | ( | std::ostream & | os, |
| const BranchData & | branch | ||
| ) |
Print BranchData contents in a format suitable for DPRINTF comments, not for MinorTrace.
Definition at line 153 of file pipe_data.cc.
References Minor::BranchData::inst, Minor::BranchData::newPredictionSeqNum, Minor::BranchData::newStreamSeqNum, X86ISA::os, Minor::BranchData::reason, and Minor::BranchData::target.
| std::ostream& Minor::operator<< | ( | std::ostream & | os, |
| LSQ::AddrRangeCoverage | coverage | ||
| ) |
Definition at line 154 of file lsq.cc.
References Minor::LSQ::FullAddrRangeCoverage, Minor::LSQ::NoAddrRangeCoverage, X86ISA::os, and Minor::LSQ::PartialAddrRangeCoverage.
| std::ostream& Minor::operator<< | ( | std::ostream & | os, |
| LSQ::LSQRequest::LSQRequestState | state | ||
| ) |
Definition at line 174 of file lsq.cc.
References Minor::LSQ::LSQRequest::Complete, Minor::LSQ::LSQRequest::Failed, Minor::LSQ::LSQRequest::InTranslation, Minor::LSQ::LSQRequest::NotIssued, X86ISA::os, Minor::LSQ::LSQRequest::RequestIssuing, Minor::LSQ::LSQRequest::RequestNeedsRetry, Minor::LSQ::state, Minor::LSQ::LSQRequest::StoreBufferIssuing, Minor::LSQ::LSQRequest::StoreBufferNeedsRetry, Minor::LSQ::LSQRequest::StoreInStoreBuffer, Minor::LSQ::LSQRequest::StoreToStoreBuffer, and Minor::LSQ::LSQRequest::Translated.
| std::ostream& Minor::operator<< | ( | std::ostream & | os, |
| Fetch1::IcacheState | state | ||
| ) |
Definition at line 211 of file fetch1.cc.
References Minor::Fetch1::IcacheNeedsRetry, Minor::Fetch1::IcacheRunning, and X86ISA::os.
| std::ostream& Minor::operator<< | ( | std::ostream & | os, |
| Fetch1::FetchState | state | ||
| ) |
Definition at line 468 of file fetch1.cc.
References Minor::Fetch1::FetchHalted, Minor::Fetch1::FetchRunning, Minor::Fetch1::FetchWaitingForPC, and X86ISA::os.
| std::ostream& Minor::operator<< | ( | std::ostream & | os, |
| LSQ::MemoryState | state | ||
| ) |
Definition at line 1605 of file lsq.cc.
References Minor::LSQ::MemoryNeedsRetry, Minor::LSQ::MemoryRunning, X86ISA::os, and Minor::LSQ::state.
| std::ostream& Minor::operator<< | ( | std::ostream & | os, |
| Execute::DrainState | state | ||
| ) |
Definition at line 1764 of file execute.cc.
References Minor::Execute::DrainAllInsts, Minor::Execute::DrainCurrentInst, Minor::Execute::DrainHaltFetch, Minor::Execute::NotDraining, and X86ISA::os.
|
static |
Print a register in the form r<n>, f<n>, m<n>(<name>), z for integer, float, misc and zero registers given an 'architectural register number'.
Definition at line 136 of file dyn_inst.cc.
References AlphaISA::CC_Reg_Base, CCRegClass, FloatRegClass, AlphaISA::FP_Reg_Base, IntRegClass, AlphaISA::Misc_Reg_Base, MiscRegClass, ArmISA::miscRegName, X86ISA::reg, regIdxToClass(), and AlphaISA::ZeroReg.
Referenced by Minor::MinorDynInst::minorTraceInst().
|
static |
Returns true if the given [addr .
. addr+size-1] transfer needs to be fragmented across a block size of block_size
Definition at line 67 of file lsq.cc.
References addrBlockOffset().
Referenced by Minor::LSQ::pushRequest().
| const unsigned int Minor::MAX_FORWARD_INSTS = 16 |
Maximum number of instructions that can be carried by the pipeline.
Definition at line 250 of file pipe_data.hh.
Referenced by Minor::ForwardInstData::resize().