};
enum ResPoolEventPri {
- ResPool_Pri = InOrderCPU::InOrderCPU_Pri - 5
+ ResPool_Pri = InOrderCPU::InOrderCPU_Pri - 5,
+ ResGrad_Pri,
+ ResSquash_Pri
};
class ResPoolEvent : public Event
DynInstPtr _inst,
int stage_num,
InstSeqNum seq_num,
- ThreadID _tid);
+ ThreadID _tid,
+ ResPoolEventPri res_pri = ResPool_Pri);
/** Set Type of Event To Be Scheduled */
void setEvent(InOrderCPU::CPUEventType e_type,
InstSeqNum done_seq_num, ThreadID tid);
/** Activate Thread in all resources */
- void activateAll(ThreadID tid);
+ void activateThread(ThreadID tid);
/** De-Activate Thread in all resources */
- void deactivateAll(ThreadID tid);
+ void deactivateThread(ThreadID tid);
- /** De-Activate Thread in all resources */
- void suspendAll(ThreadID tid);
+ /** Suspend Thread in all resources */
+ void suspendThread(ThreadID tid);
/** Broadcast Context Switch Update to all resources */
void updateAfterContextSwitch(DynInstPtr inst, ThreadID tid);
private:
std::vector<Resource *> resources;
+ /** Resources that interface with memory objects */
std::vector<int> memObjects;
+ /** Resources that need to be updated on an inst. graduation */
+ std::vector<int> gradObjects;
};
#endif //__CPU_INORDER_RESOURCE_HH__