X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcpu%2Finorder%2Fresource_pool.hh;h=e892d750af7c1b74d77e7c18f088772c0dbe9d6b;hb=39f314cc151b0a05ee0e654d52bad1c906fac668;hp=51eb413384d7d2d374b183d1f21f73aa05360d99;hpb=555bd4d8423bcc4edd77acd3226bcd2af0cbcdac;p=gem5.git diff --git a/src/cpu/inorder/resource_pool.hh b/src/cpu/inorder/resource_pool.hh index 51eb41338..e892d750a 100644 --- a/src/cpu/inorder/resource_pool.hh +++ b/src/cpu/inorder/resource_pool.hh @@ -68,7 +68,9 @@ class ResourcePool { }; enum ResPoolEventPri { - ResPool_Pri = InOrderCPU::InOrderCPU_Pri - 5 + ResPool_Pri = InOrderCPU::InOrderCPU_Pri - 5, + ResGrad_Pri, + ResSquash_Pri }; class ResPoolEvent : public Event @@ -95,7 +97,8 @@ class ResourcePool { 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, @@ -172,13 +175,13 @@ class ResourcePool { 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); @@ -215,8 +218,11 @@ class ResourcePool { private: std::vector resources; + /** Resources that interface with memory objects */ std::vector memObjects; + /** Resources that need to be updated on an inst. graduation */ + std::vector gradObjects; }; #endif //__CPU_INORDER_RESOURCE_HH__