diff options
| author | Mahmoud <[email protected]> | 2018-11-05 20:01:42 -0500 |
|---|---|---|
| committer | Mahmoud <[email protected]> | 2018-11-05 20:01:42 -0500 |
| commit | f799cd5485a36de48abce286b2f69cee75d2be38 (patch) | |
| tree | 0cfd4f8baf37d2d692e1951fb7338e3a50f06fd2 /src/abstract_hardware_model.h | |
| parent | 9a57a802d1fc13ae47bfba42325e368b43fa96c3 (diff) | |
adding Volta sub_core model and double L1 BW
Diffstat (limited to 'src/abstract_hardware_model.h')
| -rw-r--r-- | src/abstract_hardware_model.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h index 8333247..d0f7066 100644 --- a/src/abstract_hardware_model.h +++ b/src/abstract_hardware_model.h @@ -336,6 +336,7 @@ struct core_config { unsigned gpgpu_shmem_sizeDefault; unsigned gpgpu_shmem_sizePrefL1; unsigned gpgpu_shmem_sizePrefShared; + unsigned mem_unit_ports; // texture and constant cache line sizes (used to determine number of memory accesses) unsigned gpgpu_cache_texl1_linesize; @@ -908,7 +909,7 @@ public: { m_empty=true; } - void issue( const active_mask_t &mask, unsigned warp_id, unsigned long long cycle, int dynamic_warp_id ) + void issue( const active_mask_t &mask, unsigned warp_id, unsigned long long cycle, int dynamic_warp_id, int sch_id ) { m_warp_active_mask = mask; m_warp_issued_mask = mask; @@ -919,6 +920,7 @@ public: cycles = initiation_interval; m_cache_hit=false; m_empty=false; + m_scheduler_id=sch_id; } const active_mask_t & get_active_mask() const { @@ -1037,6 +1039,7 @@ public: void print( FILE *fout ) const; unsigned get_uid() const { return m_uid; } + unsigned get_schd_id() const { return m_scheduler_id; } protected: @@ -1069,6 +1072,8 @@ protected: static unsigned sm_next_uid; + unsigned m_scheduler_id; //the scheduler that issues this inst + //Jin: cdp support public: int m_is_cdp; @@ -1161,6 +1166,10 @@ public: } return false; } + bool has_free(unsigned reg_id){ + assert(reg_id < regs.size()); + return regs[reg_id]->empty(); + } bool has_ready(){ for( unsigned i = 0; i < regs.size(); i++ ) { if( not regs[i]->empty() ) { @@ -1216,6 +1225,15 @@ public: return NULL; } + warp_inst_t ** get_free(unsigned reg_id){ + assert(reg_id < regs.size()); + if( regs[reg_id]->empty() ) { + return ®s[reg_id]; + } + assert(0 && "No free register found"); + return NULL; + } + private: std::vector<warp_inst_t*> regs; const char* m_name; |
