From 97019bba41a91069f157af887111057301dcce3b Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Fri, 18 Sep 2020 15:43:59 +0200 Subject: [PATCH] Revert changes in scheduler. --- .../controller/scheduler/SchedulerFrFcfs.cpp | 20 +++++++++---------- .../controller/scheduler/SchedulerFrFcfs.h | 3 +-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.cpp b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.cpp index b29bcb73..de91e8b4 100644 --- a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.cpp +++ b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.cpp @@ -41,13 +41,9 @@ using namespace tlm; SchedulerFrFcfs::SchedulerFrFcfs() { - buffer = std::vector> + buffer = std::vector> (Configuration::getInstance().memSpec->numberOfBanks); requestBufferSize = Configuration::getInstance().requestBufferSize; - lastRequest = std::vector::iterator> - (Configuration::getInstance().memSpec->numberOfBanks); - for (auto it : buffer) - it.reserve(requestBufferSize); } bool SchedulerFrFcfs::hasBufferSpace() @@ -67,7 +63,15 @@ void SchedulerFrFcfs::storeRequest(tlm_generic_payload *payload) void SchedulerFrFcfs::removeRequest(tlm_generic_payload *payload) { unsigned bankID = DramExtension::getBank(payload).ID(); - buffer[bankID].erase(lastRequest[bankID]); + for (auto it = buffer[bankID].begin(); it != buffer[bankID].end(); it++) + { + if (*it == payload) + { + buffer[bankID].erase(it); + return; + } + } + SC_REPORT_FATAL("SchedulerFrFcfs", "removeRequest failed!"); } tlm_generic_payload *SchedulerFrFcfs::getNextRequest(BankMachine *bankMachine) @@ -82,14 +86,10 @@ tlm_generic_payload *SchedulerFrFcfs::getNextRequest(BankMachine *bankMachine) for (auto it = buffer[bankID].begin(); it != buffer[bankID].end(); it++) { if (DramExtension::getRow(*it) == openRow) - { - lastRequest[bankID] = it; return *it; - } } } // No row hit found or bank precharged - lastRequest[bankID] = buffer[bankID].begin(); return buffer[bankID].front(); } return nullptr; diff --git a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.h b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.h index b8174752..5d5347a4 100644 --- a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.h +++ b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.h @@ -53,10 +53,9 @@ public: virtual bool hasFurtherRowHit(Bank, Row) override; virtual bool hasFurtherRequest(Bank) override; private: - std::vector> buffer; + std::vector> buffer; unsigned requestBufferSize; unsigned lastBankID; - std::vector::iterator> lastRequest; }; #endif // SCHEDULERFRFCFS_H