Go to the documentation of this file.
41 #ifndef __CPU_SIMPLE_TIMING_HH__
42 #define __CPU_SIMPLE_TIMING_HH__
47 #include "params/TimingSimpleCPU.hh"
135 uint8_t *
data, uint64_t *res,
bool read);
138 uint8_t *
data,
bool read);
146 uint8_t *
data,
bool read);
205 const char *
description()
const {
return "Timing CPU icache tick"; }
245 const char *
description()
const {
return "Timing CPU dcache tick"; }
372 #endif // __CPU_SIMPLE_TIMING_HH__
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
bool scheduled() const
Determine if the current event is scheduled.
Fault initiateMemRead(Addr addr, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >()) override
void schedule(PacketPtr _pkt, Tick t)
void completeIfetch(PacketPtr)
virtual bool isSnooping() const
Determine if this request port is snooping or not.
int16_t ThreadID
Thread index/ID type.
SplitFragmentSenderState(PacketPtr _bigPkt, int _index)
unsigned int cacheLineSize() const
Get the cache line size of the system.
IprEvent(Packet *_pkt, TimingSimpleCPU *_cpu, Tick t)
void translationFault(const Fault &fault)
uint64_t Tick
Tick count type.
bool isCpuDrained() const
Check if a system is in a drained state.
std::shared_ptr< Request > RequestPtr
DcachePort(TimingSimpleCPU *_cpu)
void suspendContext(ThreadID thread_num) override
Notify the CPU that the indicated context is now suspended.
void drainResume() override
std::vector< SimpleExecContext * > threadInfo
IcachePort(TimingSimpleCPU *_cpu)
This class captures the state of an address translation.
void finish(const Fault &fault, const RequestPtr &req, ThreadContext *tc, BaseTLB::Mode mode)
EventFunctionWrapper fetchEvent
void buildSplitPacket(PacketPtr &pkt1, PacketPtr &pkt2, const RequestPtr &req1, const RequestPtr &req2, const RequestPtr &req, uint8_t *data, bool read)
PacketPtr buildPacket(const RequestPtr &req, bool read)
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
void threadSnoop(PacketPtr pkt, ThreadID sender)
DrainState
Object drain/handover states.
const char * description() const
virtual void recvFunctionalSnoop(PacketPtr pkt)
Receive a functional snoop request packet from the peer.
Fault initiateHtmCmd(Request::Flags flags) override
hardware transactional memory
FetchTranslation fetchTranslation
EventFunctionWrapper retryRespEvent
ThreadContext is the external interface to all thread state for anything outside of the CPU.
A virtual base opaque structure used to hold state associated with the packet (e.g....
void markDelayed()
Signal that the translation has been delayed due to a hw page table walk.
A TimingCPUPort overrides the default behaviour of the recvTiming and recvRetry and implements events...
void advanceInst(const Fault &fault)
std::shared_ptr< FaultBase > Fault
virtual const char * description() const
Return a C string describing the event.
Ports are used to interface objects to each other.
void finishTranslation(WholeTranslationState *state)
Finish a DTB translation.
void completeDataAccess(PacketPtr pkt)
virtual void sendRetryResp()
Send a retry to the response port that previously attempted a sendTimingResp to this request port and...
DrainState drain() override
DTickEvent(TimingSimpleCPU *_cpu)
Port & getInstPort() override
Return a reference to the instruction port.
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
const char * description() const
Return a C string describing the event.
TimingCPUPort(const std::string &_name, TimingSimpleCPU *_cpu)
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
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
Port & getDataPort() override
Return a reference to the data port.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
const Params * params() const
const std::string name() const
Return port name (for DPRINTF).
FetchTranslation(TimingSimpleCPU *_cpu)
MicroPC microPC() const override
const char * description() const
void sendData(const RequestPtr &req, uint8_t *data, uint64_t *res, bool read)
TickEvent(TimingSimpleCPU *_cpu)
bool handleReadPacket(PacketPtr pkt)
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
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...
TimingSimpleCPU(TimingSimpleCPUParams *params)
void switchOut() override
Prepare for another CPU to take over execution.
Cycles is a wrapper class for representing cycle counts, i.e.
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
void sendFetch(const Fault &fault, const RequestPtr &req, ThreadContext *tc)
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...
SenderState * senderState
This packet's sender state.
bool tryCompleteDrain()
Try to complete a drain request.
bool isSquashed() const
This function is used by the page table walker to determine if it could translate the a pending reque...
virtual ~TimingSimpleCPU()
void sendSplitData(const RequestPtr &req1, const RequestPtr &req2, const RequestPtr &req, uint8_t *data, bool read)
void verifyMemoryMode() const override
Verify that the system is in a memory mode supported by the CPU.
Fault initiateMemAMO(Addr addr, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
void activateContext(ThreadID thread_num) override
Notify the CPU that the indicated context is now active.
void htmSendAbortSignal(HtmFailureFaultCause) override
This function is used to instruct the memory subsystem that a transaction should be aborted and the s...
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
void printAddr(Addr a)
Print state of address in memory system via PrintReq (for debugging).
ITickEvent(TimingSimpleCPU *_cpu)
Generated on Wed Sep 30 2020 14:02:09 for gem5 by doxygen 1.8.17