From 2cfa7114af2fb3dc6a3fad2d3010b2fd7821d098 Mon Sep 17 00:00:00 2001 From: "Thanh C. Tran" Date: Thu, 23 Feb 2017 21:14:30 +0100 Subject: [PATCH] Implement getNextRequest # Explain what has been changed # Explain why this change is being made # Provide links to any relevant tickets, articles or other resources --- .../src/controller/scheduler/SMS.cpp | 22 ++++++++++++++++--- .../simulator/src/controller/scheduler/SMS.h | 2 ++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/DRAMSys/simulator/src/controller/scheduler/SMS.cpp b/DRAMSys/simulator/src/controller/scheduler/SMS.cpp index a5eef6dc..a3ae0867 100644 --- a/DRAMSys/simulator/src/controller/scheduler/SMS.cpp +++ b/DRAMSys/simulator/src/controller/scheduler/SMS.cpp @@ -2,12 +2,28 @@ using namespace std; -void SMS::schedule (gp *payload) +void SMS::schedule(gp *payload) { - buffer[DramExtension::getExtension(payload).getThread()].emplace_back(payload); + buffer[DramExtension::getExtension(payload).getThread()].emplace_back(payload); } std::pair SMS::getNextRequest(Bank bank) { - return pair(Command::NOP, NULL); + if (bankbuffer[bank].empty()) + { + return pair(Command::NOP, NULL); + } + else + { + gp* payload = bankbuffer[bank].front(); + Command command = IScheduler::getNextCommand(*payload); + if (command == Command::Read || command == Command::ReadA || command == Command::Write + || command == Command::WriteA) + { + bankbuffer[bank].pop_front(); + } + + return pair(command, payload); + } + } diff --git a/DRAMSys/simulator/src/controller/scheduler/SMS.h b/DRAMSys/simulator/src/controller/scheduler/SMS.h index c2c7dfa3..d6fde08a 100644 --- a/DRAMSys/simulator/src/controller/scheduler/SMS.h +++ b/DRAMSys/simulator/src/controller/scheduler/SMS.h @@ -18,6 +18,8 @@ public: private: std::map> buffer; + std::map> bankbuffer; + unsigned int SJFprobability; };