From b76688fb5bfbd3ec4b0d1da932c4d0a0f3367e94 Mon Sep 17 00:00:00 2001 From: "Thanh C. Tran" Date: Wed, 3 May 2017 23:24:51 +0200 Subject: [PATCH] Change to better variable name --- .../src/controller/scheduler/SMS.cpp | 46 +++++++++---------- .../simulator/src/controller/scheduler/SMS.h | 4 +- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/DRAMSys/simulator/src/controller/scheduler/SMS.cpp b/DRAMSys/simulator/src/controller/scheduler/SMS.cpp index 3a7f984d..f5054993 100644 --- a/DRAMSys/simulator/src/controller/scheduler/SMS.cpp +++ b/DRAMSys/simulator/src/controller/scheduler/SMS.cpp @@ -49,7 +49,7 @@ void SMS::batchScheduler() } } -bool SMS::selectSJF(sc_time memClk, std::map::iterator &select) +bool SMS::selectSJF(sc_time memClk, std::map::iterator &lastSelectedThread) { // find threads with non-empty ready batch std::vector threadsWithNonEmptyReadybatches; @@ -89,7 +89,7 @@ bool SMS::selectSJF(sc_time memClk, std::map::iterator &sel } // save selected thread - select = readybatches.find(Thread(minThread)); + lastSelectedThread = readybatches.find(Thread(minThread)); debugManager.printDebugMessage(name(), "[SJF] Select ready batch of thread " + to_string(minThread.ID())); @@ -120,29 +120,29 @@ bool SMS::selectSJF(sc_time memClk, std::map::iterator &sel } -bool SMS::selectRR(sc_time memClk, std::map::iterator &select) +bool SMS::selectRR(sc_time memClk, std::map::iterator &nextSelectedThread) { // pick a non-empty ready batch - std::map::iterator saved = select; - while ((*select).second->isEmpty()) + std::map::iterator savedOriginalNextSelectedThread = nextSelectedThread; + while ((*nextSelectedThread).second->isEmpty()) { // form ready batch for this thread - Thread thread = (*select).first; - while (!buffer[thread].empty() && (*select).second->addTransaction(buffer[thread].front())) + Thread thread = (*nextSelectedThread).first; + while (!buffer[thread].empty() && (*nextSelectedThread).second->addTransaction(buffer[thread].front())) { buffer[thread].pop_front(); } - if ((*select).second->isEmpty()) + if ((*nextSelectedThread).second->isEmpty()) { // cannot form ready batch then move to next thread - select++; - if (select == readybatches.end()) + nextSelectedThread++; + if (nextSelectedThread == readybatches.end()) { - select = readybatches.begin(); + nextSelectedThread = readybatches.begin(); } - if (select == saved) + if (nextSelectedThread == savedOriginalNextSelectedThread) { // the next thread is the original thread, that mean req buffer are totally empty // non-existed ready batch to be picked up & drained @@ -151,17 +151,17 @@ bool SMS::selectRR(sc_time memClk, std::map::iterator &sele } } debugManager.printDebugMessage(name(), - "[RR] Select ready batch of thread " + to_string((*select).first.ID())); + "[RR] Select ready batch of thread " + to_string((*nextSelectedThread).first.ID())); // drain to bank buffers - std::deque &requestPtrs = (*select).second->getTransactions(); + std::deque &requestPtrs = (*nextSelectedThread).second->getTransactions(); for (auto payloadPtrIterator = requestPtrs.begin(); payloadPtrIterator != requestPtrs.end(); payloadPtrIterator++) { Bank bank = DramExtension::getExtension(*payloadPtrIterator).getBank(); bankbuffer[bank].emplace_back(*payloadPtrIterator); debugManager.printDebugMessage(name(), - "[RR] Drained request in the ready batch of thread " + to_string((*select).first.ID()) + "[RR] Drained request in the ready batch of thread " + to_string((*nextSelectedThread).first.ID()) + " to bankbuffer " + to_string(bank.ID())); wait(memClk); } @@ -175,7 +175,7 @@ void SMS::selectRR_SJF(bool isSJF, sc_time memClk) { if (isSJF) { // select by Shortest Job First policy - bool success = selectSJF(memClk, selected); + bool success = selectSJF(memClk, selectedThread); if (!success) { wait(newRequest); @@ -184,11 +184,11 @@ void SMS::selectRR_SJF(bool isSJF, sc_time memClk) { else { // select by Round Robin policy - if (selected == readybatches.end()) + if (selectedThread == readybatches.end()) { // first Round Robin selection - selected = readybatches.begin(); - bool success = selectRR(memClk, selected); + selectedThread = readybatches.begin(); + bool success = selectRR(memClk, selectedThread); if (!success) { wait(newRequest); @@ -198,12 +198,12 @@ void SMS::selectRR_SJF(bool isSJF, sc_time memClk) { { // subsequent Round Robin selection // move the select iterator to the next one - selected++; - if (selected == readybatches.end()) + selectedThread++; + if (selectedThread == readybatches.end()) { - selected = readybatches.begin(); + selectedThread = readybatches.begin(); } - bool success = selectRR(memClk, selected); + bool success = selectRR(memClk, selectedThread); if (!success) { wait(newRequest); diff --git a/DRAMSys/simulator/src/controller/scheduler/SMS.h b/DRAMSys/simulator/src/controller/scheduler/SMS.h index 70ee26b0..1ca75c70 100644 --- a/DRAMSys/simulator/src/controller/scheduler/SMS.h +++ b/DRAMSys/simulator/src/controller/scheduler/SMS.h @@ -29,7 +29,7 @@ public: } // initialize selected thread iterator - selected = readybatches.end(); + selectedThread = readybatches.end(); SC_THREAD(batchScheduler); } SC_HAS_PROCESS(SMS); @@ -53,7 +53,7 @@ private: std::map> bankbuffer; std::map readybatches; std::map inFlightMemRequestCounter; - std::map::iterator selected; + std::map::iterator selectedThread; unsigned int SJFprobability; DebugManager& debugManager;