|
gem5
|
#include <deriv.hh>
Public Member Functions | |
| DerivO3CPU (DerivO3CPUParams *p) | |
Public Member Functions inherited from FullO3CPU< O3CPUImpl > | |
| FullO3CPU (DerivO3CPUParams *params) | |
| Constructs a CPU with the given parameters. More... | |
| ~FullO3CPU () | |
| Destructor. More... | |
| void | regStats () override |
| Registers statistics. More... | |
| void | regProbePoints () override |
| Register probe points. More... | |
| void | demapPage (Addr vaddr, uint64_t asn) |
| void | demapInstPage (Addr vaddr, uint64_t asn) |
| void | demapDataPage (Addr vaddr, uint64_t asn) |
| void | tick () |
| Ticks CPU, calling tick() on each stage, and checking the overall activity to see if the CPU should deschedule itself. More... | |
| void | init () override |
| Initialize the CPU. More... | |
| void | startup () override |
| int | numActiveThreads () |
| Returns the Number of Active Threads in the CPU. More... | |
| void | activateThread (ThreadID tid) |
| Add Thread to Active Threads List. More... | |
| void | deactivateThread (ThreadID tid) |
| Remove Thread from Active Threads List. More... | |
| void | insertThread (ThreadID tid) |
| Setup CPU to insert a thread's context. More... | |
| void | removeThread (ThreadID tid) |
| Remove all of a thread's context from CPU. More... | |
| Counter | totalInsts () const override |
| Count the Total Instructions Committed in the CPU. More... | |
| Counter | totalOps () const override |
| Count the Total Ops (including micro ops) committed in the CPU. More... | |
| void | activateContext (ThreadID tid) override |
| Add Thread to Active Threads List. More... | |
| void | suspendContext (ThreadID tid) override |
| Remove Thread from Active Threads List. More... | |
| void | haltContext (ThreadID tid) override |
| Remove Thread from Active Threads List && Remove Thread Context from CPU. More... | |
| void | updateThreadPriority () |
| Update The Order In Which We Process Threads. More... | |
| bool | isDraining () const |
| Is the CPU draining? More... | |
| void | serializeThread (CheckpointOut &cp, ThreadID tid) const override |
| void | unserializeThread (CheckpointIn &cp, ThreadID tid) override |
| void | syscall (int64_t callnum, ThreadID tid, Fault *fault) |
| Executes a syscall. More... | |
| DrainState | drain () override |
| Starts draining the CPU's pipeline of all instructions in order to stop all memory accesses. More... | |
| void | drainResume () override |
| Resumes execution after a drain. More... | |
| void | commitDrained (ThreadID tid) |
| Commit has reached a safe point to drain a thread. More... | |
| void | switchOut () override |
| Switches out this CPU. More... | |
| void | takeOverFrom (BaseCPU *oldCPU) override |
| Takes over from another CPU. More... | |
| void | verifyMemoryMode () const override |
| InstSeqNum | getAndIncrementInstSeq () |
| Get the current instruction sequence number, and increment it. More... | |
| void | trap (const Fault &fault, ThreadID tid, const StaticInstPtr &inst) |
| Traps to handle given fault. More... | |
| Fault | hwrei (ThreadID tid) |
| HW return from error interrupt. More... | |
| bool | simPalCheck (int palFunc, ThreadID tid) |
| Fault | getInterrupts () |
| Returns the Fault for any valid interrupt. More... | |
| void | processInterrupts (const Fault &interrupt) |
| Processes any an interrupt fault. More... | |
| void | halt () |
| Halts the CPU. More... | |
| TheISA::MiscReg | readMiscRegNoEffect (int misc_reg, ThreadID tid) const |
| Register accessors. More... | |
| TheISA::MiscReg | readMiscReg (int misc_reg, ThreadID tid) |
| Reads a misc. More... | |
| void | setMiscRegNoEffect (int misc_reg, const TheISA::MiscReg &val, ThreadID tid) |
| Sets a miscellaneous register. More... | |
| void | setMiscReg (int misc_reg, const TheISA::MiscReg &val, ThreadID tid) |
| Sets a misc. More... | |
| uint64_t | readIntReg (int reg_idx) |
| TheISA::FloatReg | readFloatReg (int reg_idx) |
| TheISA::FloatRegBits | readFloatRegBits (int reg_idx) |
| TheISA::CCReg | readCCReg (int reg_idx) |
| void | setIntReg (int reg_idx, uint64_t val) |
| void | setFloatReg (int reg_idx, TheISA::FloatReg val) |
| void | setFloatRegBits (int reg_idx, TheISA::FloatRegBits val) |
| void | setCCReg (int reg_idx, TheISA::CCReg val) |
| uint64_t | readArchIntReg (int reg_idx, ThreadID tid) |
| float | readArchFloatReg (int reg_idx, ThreadID tid) |
| uint64_t | readArchFloatRegInt (int reg_idx, ThreadID tid) |
| TheISA::CCReg | readArchCCReg (int reg_idx, ThreadID tid) |
| void | setArchIntReg (int reg_idx, uint64_t val, ThreadID tid) |
| Architectural register accessors. More... | |
| void | setArchFloatReg (int reg_idx, float val, ThreadID tid) |
| void | setArchFloatRegInt (int reg_idx, uint64_t val, ThreadID tid) |
| void | setArchCCReg (int reg_idx, TheISA::CCReg val, ThreadID tid) |
| void | pcState (const TheISA::PCState &newPCState, ThreadID tid) |
| Sets the commit PC state of a specific thread. More... | |
| TheISA::PCState | pcState (ThreadID tid) |
| Reads the commit PC state of a specific thread. More... | |
| Addr | instAddr (ThreadID tid) |
| Reads the commit PC of a specific thread. More... | |
| MicroPC | microPC (ThreadID tid) |
| Reads the commit micro PC of a specific thread. More... | |
| Addr | nextInstAddr (ThreadID tid) |
| Reads the next PC of a specific thread. More... | |
| void | squashFromTC (ThreadID tid) |
| Initiates a squash of all in-flight instructions for a given thread. More... | |
| ListIt | addInst (DynInstPtr &inst) |
| Function to add instruction onto the head of the list of the instructions. More... | |
| void | instDone (ThreadID tid, DynInstPtr &inst) |
| Function to tell the CPU that an instruction has completed. More... | |
| void | removeFrontInst (DynInstPtr &inst) |
| Remove an instruction from the front end of the list. More... | |
| void | removeInstsNotInROB (ThreadID tid) |
| Remove all instructions that are not currently in the ROB. More... | |
| void | removeInstsUntil (const InstSeqNum &seq_num, ThreadID tid) |
| Remove all instructions younger than the given sequence number. More... | |
| void | squashInstIt (const ListIt &instIt, ThreadID tid) |
| Removes the instruction pointed to by the iterator. More... | |
| void | cleanUpRemovedInsts () |
| Cleans up all instructions on the remove list. More... | |
| void | dumpInsts () |
| Debug function to print all instructions on the list. More... | |
| void | activityThisCycle () |
| Records that there was time buffer activity this cycle. More... | |
| void | activateStage (const StageIdx idx) |
| Changes a stage's status to active within the activity recorder. More... | |
| void | deactivateStage (const StageIdx idx) |
| Changes a stage's status to inactive within the activity recorder. More... | |
| void | wakeCPU () |
| Wakes the CPU, rescheduling the CPU if it's not already active. More... | |
| virtual void | wakeup (ThreadID tid) override |
| ThreadID | getFreeTid () |
| Gets a free thread id. More... | |
| ThreadContext * | tcBase (ThreadID tid) |
| Returns a pointer to a thread context. More... | |
| Fault | read (RequestPtr &req, RequestPtr &sreqLow, RequestPtr &sreqHigh, int load_idx) |
| CPU read function, forwards read to LSQ. More... | |
| Fault | write (RequestPtr &req, RequestPtr &sreqLow, RequestPtr &sreqHigh, uint8_t *data, int store_idx) |
| CPU write function, forwards write to LSQ. More... | |
| MasterPort & | getInstPort () override |
| Used by the fetch unit to get a hold of the instruction port. More... | |
| MasterPort & | getDataPort () override |
| Get the dcache port (used to find block size for translations). More... | |
Public Member Functions inherited from BaseO3CPU | |
| BaseO3CPU (BaseCPUParams *params) | |
| void | regStats () |
Additional Inherited Members | |
Public Types inherited from FullO3CPU< O3CPUImpl > | |
| enum | Status |
| enum | StageIdx |
| Enum to give each stage a specific index, so when calling activateStage() or deactivateStage(), they can specify which stage is being activated/deactivated. More... | |
| typedef O3CPUImpl::CPUPol | CPUPolicy |
| typedef O3CPUImpl::DynInstPtr | DynInstPtr |
| typedef O3CPUImpl::O3CPU | O3CPU |
| typedef O3ThreadState< O3CPUImpl > | ImplState |
| typedef O3ThreadState< O3CPUImpl > | Thread |
| typedef std::list< DynInstPtr > ::iterator | ListIt |
| typedef CPUPolicy::TimeStruct | TimeStruct |
| Typedefs from the Impl to get the structs that each of the time buffers should use. More... | |
| typedef CPUPolicy::FetchStruct | FetchStruct |
| typedef CPUPolicy::DecodeStruct | DecodeStruct |
| typedef CPUPolicy::RenameStruct | RenameStruct |
| typedef CPUPolicy::IEWStruct | IEWStruct |
Static Public Member Functions inherited from BaseCPU | |
| static int | numSimulatedInsts () |
| static int | numSimulatedOps () |
| static void | wakeup (ThreadID tid) |
Public Attributes inherited from FullO3CPU< O3CPUImpl > | |
| TheISA::TLB * | itb |
| TheISA::TLB * | dtb |
| Status | _status |
| Overall CPU status. More... | |
| ProbePointArg< PacketPtr > * | ppInstAccessComplete |
| ProbePointArg< std::pair < DynInstPtr, PacketPtr > > * | ppDataAccessComplete |
| int | instcount |
| Count of total number of dynamic instructions in flight. More... | |
| std::list< DynInstPtr > | instList |
| List of all the instructions in flight. More... | |
| std::queue< ListIt > | removeList |
| List of all the instructions that will be removed at the end of this cycle. More... | |
| bool | removeInstsThisCycle |
| Records if instructions need to be removed this cycle due to being retired or squashed. More... | |
| TimeBuffer< TimeStruct > | timeBuffer |
| The main time buffer to do backwards communication. More... | |
| TimeBuffer< FetchStruct > | fetchQueue |
| The fetch stage's instruction queue. More... | |
| TimeBuffer< DecodeStruct > | decodeQueue |
| The decode stage's instruction queue. More... | |
| TimeBuffer< RenameStruct > | renameQueue |
| The rename stage's instruction queue. More... | |
| TimeBuffer< IEWStruct > | iewQueue |
| The IEW stage's instruction queue. More... | |
| InstSeqNum | globalSeqNum |
| The global sequence number counter. More... | |
| Checker< O3CPUImpl > * | checker |
| Pointer to the checker, which can dynamically verify instruction results at run time. More... | |
| System * | system |
| Pointer to the system. More... | |
| std::vector< Thread * > | thread |
| Pointers to all of the threads in the CPU. More... | |
| std::list< int > | cpuWaitList |
| Threads Scheduled to Enter CPU. More... | |
| Cycles | lastRunningCycle |
| The cycle that the CPU was last running, used for statistics. More... | |
| Tick | lastActivatedCycle |
| The cycle that the CPU was last activated by a new thread. More... | |
| std::map< ThreadID, unsigned > | threadMap |
| Mapping for system thread id to cpu id. More... | |
| std::vector< ThreadID > | tids |
| Available thread ids in the cpu. More... | |
| Stats::Scalar | timesIdled |
| Stat for total number of times the CPU is descheduled. More... | |
| Stats::Scalar | idleCycles |
| Stat for total number of cycles the CPU spends descheduled. More... | |
| Stats::Scalar | quiesceCycles |
| Stat for total number of cycles the CPU spends descheduled due to a quiesce operation or waiting for an interrupt. More... | |
| Stats::Vector | committedInsts |
| Stat for the number of committed instructions per thread. More... | |
| Stats::Vector | committedOps |
| Stat for the number of committed ops (including micro ops) per thread. More... | |
| Stats::Formula | cpi |
| Stat for the CPI per thread. More... | |
| Stats::Formula | totalCpi |
| Stat for the total CPI. More... | |
| Stats::Formula | ipc |
| Stat for the IPC per thread. More... | |
| Stats::Formula | totalIpc |
| Stat for the total IPC. More... | |
| Stats::Scalar | intRegfileReads |
| Stats::Scalar | intRegfileWrites |
| Stats::Scalar | fpRegfileReads |
| Stats::Scalar | fpRegfileWrites |
| Stats::Scalar | ccRegfileReads |
| Stats::Scalar | ccRegfileWrites |
| Stats::Scalar | miscRegfileReads |
| Stats::Scalar | miscRegfileWrites |
Protected Attributes inherited from FullO3CPU< O3CPUImpl > | |
| CPUPolicy::Fetch | fetch |
| The fetch stage. More... | |
| CPUPolicy::Decode | decode |
| The decode stage. More... | |
| CPUPolicy::Rename | rename |
| The dispatch stage. More... | |
| CPUPolicy::IEW | iew |
| The issue/execute/writeback stages. More... | |
| CPUPolicy::Commit | commit |
| The commit stage. More... | |
| PhysRegFile | regFile |
| The register file. More... | |
| CPUPolicy::FreeList | freeList |
| The free list. More... | |
| CPUPolicy::RenameMap | renameMap [O3CPUImpl::MaxThreads] |
| The rename map. More... | |
| CPUPolicy::RenameMap | commitRenameMap [O3CPUImpl::MaxThreads] |
| The commit rename map. More... | |
| CPUPolicy::ROB | rob |
| The re-order buffer. More... | |
| std::list< ThreadID > | activeThreads |
| Active Threads List. More... | |
| Scoreboard | scoreboard |
| Integer Register Scoreboard. More... | |
| std::vector< TheISA::ISA * > | isa |
| IcachePort | icachePort |
| Instruction port. More... | |
| DcachePort | dcachePort |
| Data port. More... | |