summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/dram_sched.h
diff options
context:
space:
mode:
authorMahmoud <[email protected]>2017-10-25 13:15:44 -0400
committerMahmoud <[email protected]>2017-10-25 13:15:44 -0400
commit50b7ac49a78948f61fa685d717de90feaa277b9b (patch)
tree668375bfa2f2427a850fa7e691d5ceae347a6491 /src/gpgpu-sim/dram_sched.h
parent07b375cc0c0da2b8a8ca7263f11ecca8ebaf8fe9 (diff)
The commits includes:
1- REEAD/WERITE buffer for DRAM 2- Fixing FETCH_ON_WRITE cahce policy bug
Diffstat (limited to 'src/gpgpu-sim/dram_sched.h')
-rw-r--r--src/gpgpu-sim/dram_sched.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gpgpu-sim/dram_sched.h b/src/gpgpu-sim/dram_sched.h
index 3860f5b..63f5831 100644
--- a/src/gpgpu-sim/dram_sched.h
+++ b/src/gpgpu-sim/dram_sched.h
@@ -35,6 +35,11 @@
#include <list>
#include <map>
+enum memory_mode {
+ READ_MODE = 0,
+ WRITE_MODE
+};
+
class frfcfs_scheduler {
public:
frfcfs_scheduler( const memory_config *config, dram_t *dm, memory_stats_t *stats );
@@ -43,17 +48,24 @@ public:
dram_req_t *schedule( unsigned bank, unsigned curr_row );
void print( FILE *fp );
unsigned num_pending() const { return m_num_pending;}
+ unsigned num_write_pending() const { return m_num_write_pending;}
private:
const memory_config *m_config;
dram_t *m_dram;
unsigned m_num_pending;
+ unsigned m_num_write_pending;
std::list<dram_req_t*> *m_queue;
std::map<unsigned,std::list<std::list<dram_req_t*>::iterator> > *m_bins;
std::list<std::list<dram_req_t*>::iterator> **m_last_row;
unsigned *curr_row_service_time; //one set of variables for each bank.
unsigned *row_service_timestamp; //tracks when scheduler began servicing current row
+ std::list<dram_req_t*> *m_write_queue;
+ std::map<unsigned,std::list<std::list<dram_req_t*>::iterator> > *m_write_bins;
+ std::list<std::list<dram_req_t*>::iterator> **m_last_write_row;
+
+ enum memory_mode m_mode;
memory_stats_t *m_stats;
};