diff options
| author | Tor Aamodt <[email protected]> | 2020-07-04 16:26:52 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-07-04 16:26:52 -0700 |
| commit | 673f8a9f0056b456871642f4d25be5c598fcba6e (patch) | |
| tree | a9f379ae6ff144e8f3eccd3d510a36c2c0983edd /src/gpgpu-sim/dram_sched.h | |
| parent | c9cc4281bf84ad6cff77d20389b59d14a534ad6b (diff) | |
| parent | 9d3caa1cb2c70a3be186d4704ecab0fe13277516 (diff) | |
Merge pull request #1 from gpgpu-sim/dev
Dev
Diffstat (limited to 'src/gpgpu-sim/dram_sched.h')
| -rw-r--r-- | src/gpgpu-sim/dram_sched.h | 87 |
1 files changed, 50 insertions, 37 deletions
diff --git a/src/gpgpu-sim/dram_sched.h b/src/gpgpu-sim/dram_sched.h index 3860f5b..4f1ef3d 100644 --- a/src/gpgpu-sim/dram_sched.h +++ b/src/gpgpu-sim/dram_sched.h @@ -7,54 +7,67 @@ // // Redistributions of source code must retain the above copyright notice, this // list of conditions and the following disclaimer. -// Redistributions in binary form must reproduce the above copyright notice, this -// list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// Neither the name of The University of British Columbia nor the names of its -// contributors may be used to endorse or promote products derived from this -// software without specific prior written permission. +// Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. Neither the name of +// The University of British Columbia nor the names of its contributors may be +// used to endorse or promote products derived from this software without +// specific prior written permission. // -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. #ifndef dram_sched_h_INCLUDED #define dram_sched_h_INCLUDED -#include "dram.h" -#include "shader.h" -#include "gpu-sim.h" -#include "gpu-misc.h" #include <list> #include <map> +#include "dram.h" +#include "gpu-misc.h" +#include "gpu-sim.h" +#include "shader.h" + +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 ); - void add_req( dram_req_t *req ); - void data_collection(unsigned bank); - dram_req_t *schedule( unsigned bank, unsigned curr_row ); - void print( FILE *fp ); - unsigned num_pending() const { return m_num_pending;} + public: + frfcfs_scheduler(const memory_config *config, dram_t *dm, + memory_stats_t *stats); + void add_req(dram_req_t *req); + void data_collection(unsigned bank); + 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 -private: - const memory_config *m_config; - dram_t *m_dram; - unsigned m_num_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; - memory_stats_t *m_stats; + enum memory_mode m_mode; + memory_stats_t *m_stats; }; #endif |
