Go to the documentation of this file.
41 #ifndef __CPU_SIMPLE_EXEC_CONTEXT_HH__
42 #define __CPU_SIMPLE_EXEC_CONTEXT_HH__
88 thread->threadId()).c_str()),
90 "Number of matrix alu accesses"),
92 "Number of times a function call or return occured"),
94 "Number of matrix instructions"),
96 "Number of idle cycles"),
98 "Number of busy cycles"),
100 "Percentage of non-idle cycles"),
102 "Percentage of idle cycles"),
104 "Number of branches predicted as taken"),
106 "Number of branch mispredictions"),
122 ->numVecPredRegWrites),
283 assert(byte_enable.size() == size);
293 assert(byte_enable.size() == size);
303 assert(byte_enable.size() == size);
439 #endif // __CPU_EXEC_CONTEXT_HH__
This is a simple scalar statistic, like a counter.
virtual Fault initiateMemAMO(Addr addr, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op)
RegVal readMiscReg(RegIndex misc_reg) override
void setMiscReg(int misc_reg, RegVal val) override
Sets a miscellaneous register, handling any architectural side effects due to writing that register.
void * getWritableReg(const RegId &arch_reg) override
void armMonitor(ThreadID tid, Addr address)
RegVal getReg(const RegId &arch_reg) const override
std::array< statistics::Scalar *, CCRegClass+1 > numRegWrites
int64_t htmTransactionStops
void mwaitAtomic(ThreadID tid, ThreadContext *tc, BaseMMU *mmu)
ExecContextStats(BaseSimpleCPU *cpu, SimpleThread *thread)
bool readMemAccPredicate() const override
Fault initiateMemMgmtCmd(Request::Flags flags) override
Initiate a memory management command with no valid address.
statistics::Scalar numMatAluAccesses
statistics::Scalar numCallsReturns
void * getWritableRegOperand(const StaticInst *si, int idx) override
virtual Fault amoMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op)
void setMiscReg(RegIndex misc_reg, RegVal val) override
gem5::SimpleExecContext::ExecContextStats execContextStats
void setStCondFailures(unsigned sc_failures) override
uint64_t newHtmTransactionUid() const override
RegVal readMiscReg(int misc_reg) override
Reads a miscellaneous register, handling any architectural side effects due to reading that register.
A stat that calculates the per tick average of a value.
void getRegOperand(const StaticInst *si, int idx, void *val) override
unsigned int readStCondFailures() const override
Returns the number of consecutive store conditional failures.
std::array< statistics::Scalar *, CCRegClass+1 > numRegReads
std::string csprintf(const char *format, const Args &...args)
void setReg(const RegId &arch_reg, RegVal val) override
int64_t htmTransactionStarts
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
statistics::Scalar numPredictedBranches
uint64_t getHtmTransactionalDepth() const override
void setPredicate(bool val) override
const PCStateBase & pcState() const override
Fault amoMem(Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
For atomic-mode contexts, perform an atomic AMO (a.k.a., Atomic Read-Modify-Write Memory Operation)
void setPredicate(bool val)
unsigned readStCondFailures() const override
virtual Fault writeMem(uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable=std::vector< bool >())
statistics::Scalar numMatRegWrites
bool mwait(PacketPtr pkt) override
void setStCondFailures(unsigned int sc_failures) override
Sets the number of consecutive store conditional failures.
bool readMemAccPredicate()
gem5::BaseCPU::BaseCPUStats baseStats
statistics::Formula numIdleCycles
virtual Fault readMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >())
void demapPage(Addr vaddr, uint64_t asn) override
Invalidate a page in the DTLB and ITLB.
Base, ISA-independent static instruction class.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
std::shared_ptr< FaultBase > Fault
bool readPredicate() const
bool inHtmTransactionalState() const override
#define ADD_STAT(n,...)
Convenience macro to add a stat to a statistics group.
void mwaitAtomic(ThreadContext *tc) override
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
statistics::Scalar numMatInsts
statistics::Scalar numCycles
bool readPredicate() const override
void setMemAccPredicate(bool val)
statistics::Average notIdleFraction
Fault writeMem(uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable) override
For atomic-mode contexts, perform an atomic memory write operation.
int threadId() const override
statistics::Formula numBusyCycles
Counter numInst
PER-THREAD STATS.
virtual BaseHTMCheckpointPtr & getHtmCheckpointPtr()=0
const PCStateBase & pcState() const override
AddressMonitor * getCpuAddrMonitor(ThreadID tid)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
statistics::Formula idleFraction
trace::InstRecord * traceData
std::vector< std::unique_ptr< ExecuteCPUStats > > executeStats
void pcState(const PCStateBase &val) override
void setMiscRegOperand(const StaticInst *si, int idx, RegVal val) override
Fault initiateMemRead(Addr addr, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) override
Initiate a timing memory read operation.
ThreadContext * getTC()
Returns the pointer to this SimpleThread's ThreadContext.
virtual Fault initiateMemMgmtCmd(Request::Flags flags)=0
Memory management commands such as hardware transactional memory commands or TLB invalidation command...
void setMemAccPredicate(bool val) override
@ MiscRegClass
Control (misc) register.
Derived & prereq(const Stat &prereq)
Set the prerequisite stat and marks this stat to print at the end of simulation.
void setRegOperand(const StaticInst *si, int idx, RegVal val) override
virtual Fault initiateMemRead(Addr addr, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >())
Fault initiateMemAMO(Addr addr, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
For timing-mode contexts, initiate an atomic AMO (atomic read-modify-write memory operation)
void demapPage(Addr vaddr, uint64_t asn)
AddressMonitor * getAddrMonitor() override
double Counter
All counters are of 64-bit values.
ThreadContext * tcBase() const override
Returns a pointer to the ThreadContext.
RegVal readMiscRegOperand(const StaticInst *si, int idx) override
void setRegOperand(const StaticInst *si, int idx, const void *val) override
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
void armMonitor(Addr address) override
bool mwait(ThreadID tid, PacketPtr pkt)
Fault readMem(Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) override
Perform an atomic memory read operation.
statistics::Scalar numBranchMispred
Number of misprediced branches.
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::unique_ptr< PCStateBase > predPC
uint64_t getHtmTransactionUid() const override
RegVal getRegOperand(const StaticInst *si, int idx) override
void setPredicate(bool val)
SimpleExecContext(BaseSimpleCPU *_cpu, SimpleThread *_thread)
Constructor.
Register ID: describe an architectural register with its class and index.
statistics::Scalar numMatRegReads
Generated on Sun Jul 30 2023 01:56:52 for gem5 by doxygen 1.8.17