gem5
v21.2.1.0
|
The NonCachingSimpleCPU is an AtomicSimpleCPU using the 'atomic_noncaching' memory mode instead of just 'atomic'. More...
#include <noncaching.hh>
Public Member Functions | |
NonCachingSimpleCPU (const NonCachingSimpleCPUParams &p) | |
void | verifyMemoryMode () const override |
![]() | |
AtomicSimpleCPU (const AtomicSimpleCPUParams ¶ms) | |
virtual | ~AtomicSimpleCPU () |
void | init () override |
DrainState | drain () override |
void | drainResume () override |
void | switchOut () override |
void | takeOverFrom (BaseCPU *old_cpu) override |
void | verifyMemoryMode () const override |
void | activateContext (ThreadID thread_num) override |
void | suspendContext (ThreadID thread_num) override |
bool | genMemFragmentRequest (const RequestPtr &req, Addr frag_addr, int size, Request::Flags flags, const std::vector< bool > &byte_enable, int &frag_size, int &size_left) const |
Helper function used to set up the request for a single fragment of a memory access. More... | |
Fault | readMem (Addr addr, uint8_t *data, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >()) override |
Fault | initiateHtmCmd (Request::Flags flags) override |
Hardware transactional memory commands (HtmCmds), e.g. More... | |
void | htmSendAbortSignal (ThreadID tid, uint64_t htm_uid, HtmFailureFaultCause cause) override |
Fault | writeMem (uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable=std::vector< bool >()) override |
Fault | amoMem (Addr addr, uint8_t *data, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override |
void | regProbePoints () override |
void | printAddr (Addr a) |
Print state of address in memory system via PrintReq (for debugging). More... | |
![]() | |
BaseSimpleCPU (const BaseSimpleCPUParams ¶ms) | |
virtual | ~BaseSimpleCPU () |
void | wakeup (ThreadID tid) override |
void | checkForInterrupts () |
void | setupFetchRequest (const RequestPtr &req) |
void | serviceInstCountEvents () |
void | preExecute () |
void | postExecute () |
void | advancePC (const Fault &fault) |
void | haltContext (ThreadID thread_num) override |
void | resetStats () override |
virtual Fault | initiateMemRead (Addr addr, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >()) |
virtual Fault | initiateMemAMO (Addr addr, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op) |
void | countInst () |
Counter | totalInsts () const override |
Counter | totalOps () const override |
void | serializeThread (CheckpointOut &cp, ThreadID tid) const override |
void | unserializeThread (CheckpointIn &cp, ThreadID tid) override |
Protected Member Functions | |
Tick | sendPacket (RequestPort &port, const PacketPtr &pkt) override |
Tick | fetchInstMem () override |
![]() | |
void | tick () |
bool | isCpuDrained () const |
Check if a system is in a drained state. More... | |
bool | tryCompleteDrain () |
Try to complete a drain request. More... | |
Port & | getDataPort () override |
Return a reference to the data port. More... | |
Port & | getInstPort () override |
Return a reference to the instruction port. More... | |
void | threadSnoop (PacketPtr pkt, ThreadID sender) |
Perform snoop for other cpu-local thread contexts. More... | |
![]() | |
void | checkPcEventQueue () |
void | swapActiveThread () |
void | traceFault () |
Handler used when encountering a fault; its purpose is to tear down the InstRecord. More... | |
Protected Attributes | |
AddrRangeMap< MemBackdoorPtr, 1 > | memBackdoors |
![]() | |
EventFunctionWrapper | tickEvent |
const int | width |
bool | locked |
const bool | simulate_data_stalls |
const bool | simulate_inst_stalls |
AtomicCPUPort | icachePort |
AtomicCPUDPort | dcachePort |
RequestPtr | ifetch_req |
RequestPtr | data_read_req |
RequestPtr | data_write_req |
RequestPtr | data_amo_req |
bool | dcache_access |
Tick | dcache_latency |
ProbePointArg< std::pair< SimpleThread *, const StaticInstPtr > > * | ppCommit |
Probe Points. More... | |
![]() | |
ThreadID | curThread |
branch_prediction::BPredUnit * | branchPred |
const RegIndex | zeroReg |
Status | _status |
std::unique_ptr< PCStateBase > | preExecuteTempPC |
Additional Inherited Members | |
![]() | |
Trace::InstRecord * | traceData |
CheckerCPU * | checker |
std::vector< SimpleExecContext * > | threadInfo |
std::list< ThreadID > | activeThreads |
StaticInstPtr | curStaticInst |
Current instruction. More... | |
StaticInstPtr | curMacroStaticInst |
![]() | |
enum | Status { Idle, Running, Faulting, ITBWaitResponse, IcacheRetry, IcacheWaitResponse, IcacheWaitSwitch, DTBWaitResponse, DcacheRetry, DcacheWaitResponse, DcacheWaitSwitch } |
The NonCachingSimpleCPU is an AtomicSimpleCPU using the 'atomic_noncaching' memory mode instead of just 'atomic'.
Definition at line 53 of file noncaching.hh.
gem5::NonCachingSimpleCPU::NonCachingSimpleCPU | ( | const NonCachingSimpleCPUParams & | p | ) |
Definition at line 47 of file noncaching.cc.
References fatal_if, gem5::FullSystem, and gem5::MipsISA::p.
|
overrideprotectedvirtual |
Reimplemented from gem5::AtomicSimpleCPU.
Definition at line 90 of file noncaching.cc.
References gem5::PowerISA::bd, gem5::BaseSimpleCPU::curThread, decoder, gem5::AtomicSimpleCPU::fetchInstMem(), gem5::AtomicSimpleCPU::ifetch_req, memBackdoors, gem5::ArmISA::offset, and gem5::BaseSimpleCPU::threadInfo.
|
overrideprotectedvirtual |
Reimplemented from gem5::AtomicSimpleCPU.
Definition at line 65 of file noncaching.cc.
References gem5::PowerISA::bd, memBackdoors, panic, and gem5::RequestPort::sendAtomicBackdoor().
|
override |
Definition at line 56 of file noncaching.cc.
References fatal, and gem5::X86ISA::system.
|
protected |
Definition at line 61 of file noncaching.hh.
Referenced by fetchInstMem(), and sendPacket().