summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.h
diff options
context:
space:
mode:
authorTim Rogers <[email protected]>2013-07-06 12:22:34 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:50:58 -0700
commit7da201cb86702aca80407b94858c380fd90aba38 (patch)
tree5ad4d81a260d9110679c03b9eb34bf57e14572f5 /src/gpgpu-sim/shader.h
parentded72b7697f0244aa789e25330b58674797929b0 (diff)
Integrating changes from my personal branch.
Main contribution is a static warp limiting scheduler. There is also some minor cleanup to the heirarchy of the cache code and removal some excessively long lines Review ID: 36001 lgtm: 1 [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 16580]
Diffstat (limited to 'src/gpgpu-sim/shader.h')
-rw-r--r--src/gpgpu-sim/shader.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index 76133e2..7c99ac5 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -279,6 +279,7 @@ enum concrete_scheduler
CONCRETE_SCHEDULER_LRR = 0,
CONCRETE_SCHEDULER_GTO,
CONCRETE_SCHEDULER_TWO_LEVEL_ACTIVE,
+ CONCRETE_SCHEDULER_WARP_LIMITING,
NUM_CONCRETE_SCHEDULERS
};
@@ -452,6 +453,28 @@ private:
unsigned m_max_active_warps;
};
+// Static Warp Limiting Scheduler
+class swl_scheduler : public scheduler_unit {
+public:
+ swl_scheduler ( shader_core_stats* stats, shader_core_ctx* shader,
+ Scoreboard* scoreboard, simt_stack** simt,
+ std::vector<shd_warp_t>* warp,
+ register_set* sp_out,
+ register_set* sfu_out,
+ register_set* mem_out,
+ int id,
+ char* config_string );
+ virtual ~swl_scheduler () {}
+ virtual void order_warps ();
+ virtual void done_adding_supervised_warps() {
+ m_last_supervised_issued = m_supervised_warps.begin();
+ }
+
+protected:
+ scheduler_prioritization_type m_prioritization;
+ unsigned m_num_warps_to_limit;
+};
+
class opndcoll_rfu_t { // operand collector based register file unit