Go to the documentation of this file.
41 #ifndef __CPU_SIMPLE_TIMING_HH__
42 #define __CPU_SIMPLE_TIMING_HH__
48 #include "params/BaseTimingSimpleCPU.hh"
139 uint8_t *
data, uint64_t *res,
bool read);
142 uint8_t *
data,
bool read);
150 uint8_t *
data,
bool read);
209 const char *
description()
const {
return "Timing CPU icache tick"; }
249 const char *
description()
const {
return "Timing CPU dcache tick"; }
380 #endif // __CPU_SIMPLE_TIMING_HH__
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
void markDelayed()
Signal that the translation has been delayed due to a hw page table walk.
void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid, HtmFailureFaultCause) override
This function is used to instruct the memory subsystem that a transaction should be aborted and the s...
void sendData(const RequestPtr &req, uint8_t *data, uint64_t *res, bool read)
std::vector< SimpleExecContext * > threadInfo
const std::string name() const
Return port name (for DPRINTF).
TickEvent(TimingSimpleCPU *_cpu)
EventFunctionWrapper retryRespEvent
DrainState drain() override
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
void buildSplitPacket(PacketPtr &pkt1, PacketPtr &pkt2, const RequestPtr &req1, const RequestPtr &req2, const RequestPtr &req, uint8_t *data, bool read)
unsigned int cacheLineSize() const
Get the cache line size of the system.
virtual bool isSnooping() const
Determine if this request port is snooping or not.
PacketPtr buildPacket(const RequestPtr &req, bool read)
void verifyMemoryMode() const override
Verify that the system is in a memory mode supported by the CPU.
MicroPC microPC() const
Returns the current micropc.
virtual void recvTimingSnoopReq(PacketPtr pkt)
Snoop a coherence request, we need to check if this causes a wakeup event on a cpu that is monitoring...
void sendFetch(const Fault &fault, const RequestPtr &req, ThreadContext *tc)
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
void completeDataAccess(PacketPtr pkt)
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
Fault initiateMemMgmtCmd(Request::Flags flags) override
hardware transactional memory & TLBI operations
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
const char * description() const
Cycles is a wrapper class for representing cycle counts, i.e.
SplitFragmentSenderState(PacketPtr _bigPkt, int _index)
DrainState
Object drain/handover states.
void finish(const Fault &fault, const RequestPtr &req, ThreadContext *tc, BaseMMU::Mode mode)
DTickEvent(TimingSimpleCPU *_cpu)
void switchOut() override
Prepare for another CPU to take over execution.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
bool isSquashed() const
This function is used by the page table walker to determine if it could translate the a pending reque...
std::shared_ptr< FaultBase > Fault
const Params & params() const
Fault initiateMemAMO(Addr addr, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
EventFunctionWrapper fetchEvent
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void printAddr(Addr a)
Print state of address in memory system via PrintReq (for debugging).
virtual ~TimingSimpleCPU()
uint64_t Tick
Tick count type.
const char * description() const
Return a C string describing the event.
virtual void sendRetryResp()
Send a retry to the response port that previously attempted a sendTimingResp to this request port and...
TimingCPUPort(const std::string &_name, TimingSimpleCPU *_cpu)
std::shared_ptr< Request > RequestPtr
void activateContext(ThreadID thread_num) override
Notify the CPU that the indicated context is now active.
IprEvent(Packet *_pkt, TimingSimpleCPU *_cpu, Tick t)
Port & getDataPort() override
Return a reference to the data port.
void completeIfetch(PacketPtr)
Fault initiateMemRead(Addr addr, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >()) override
void advanceInst(const Fault &fault)
A virtual base opaque structure used to hold state associated with the packet (e.g....
const PCStateBase & pcState() const override
virtual void recvFunctionalSnoop(PacketPtr pkt)
Receive a functional snoop request packet from the peer.
FetchTranslation(TimingSimpleCPU *_cpu)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
void threadSnoop(PacketPtr pkt, ThreadID sender)
ITickEvent(TimingSimpleCPU *_cpu)
SenderState * senderState
This packet's sender state.
IcachePort(TimingSimpleCPU *_cpu)
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
void takeOverFrom(BaseCPU *oldCPU) override
Load the state of a CPU from the previous CPU object, invoked on all new CPUs that are about to be sw...
void finishTranslation(WholeTranslationState *state)
Finish a DTB translation.
bool tryCompleteDrain()
Try to complete a drain request.
void drainResume() override
Resume execution after a successful drain.
void translationFault(const Fault &fault)
This class captures the state of an address translation.
Ports are used to interface objects to each other.
bool handleReadPacket(PacketPtr pkt)
void suspendContext(ThreadID thread_num) override
Notify the CPU that the indicated context is now suspended.
virtual const char * description() const
Return a C string describing the event.
Port & getInstPort() override
Return a reference to the instruction port.
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
void schedule(PacketPtr _pkt, Tick t)
A TimingCPUPort overrides the default behaviour of the recvTiming and recvRetry and implements events...
void sendSplitData(const RequestPtr &req1, const RequestPtr &req2, const RequestPtr &req, uint8_t *data, bool read)
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
FetchTranslation fetchTranslation
const char * description() const
Return a C string describing the event.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
DcachePort(TimingSimpleCPU *_cpu)
bool isCpuDrained() const
Check if a system is in a drained state.
bool scheduled() const
Determine if the current event is scheduled.
int16_t ThreadID
Thread index/ID type.
TimingSimpleCPU(const BaseTimingSimpleCPUParams ¶ms)
Generated on Sun Jul 30 2023 01:56:53 for gem5 by doxygen 1.8.17