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; };