From 0ef35e3f1a5485401c278d908978a8560d15b370 Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Wed, 8 Sep 2021 16:25:53 +0200 Subject: [PATCH] Fix bug in same-bank RFM. --- .../resources/configs/mcconfigs/fr_fcfs.json | 4 ++-- .../controller/refresh/RefreshManagerSameBank.cpp | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.json b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.json index 42e2e5dd..706d280f 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.json +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.json @@ -6,8 +6,8 @@ "RequestBufferSize": 8, "CmdMux": "Oldest", "RespQueue": "Fifo", - "RefreshPolicy": "AllBank", - "RefreshMaxPostponed": 0, + "RefreshPolicy": "SameBank", + "RefreshMaxPostponed": 4, "RefreshMaxPulledin": 0, "PowerDownPolicy": "NoPowerDown", "Arbiter": "Simple", diff --git a/DRAMSys/library/src/controller/refresh/RefreshManagerSameBank.cpp b/DRAMSys/library/src/controller/refresh/RefreshManagerSameBank.cpp index d8de04c4..5ef86933 100644 --- a/DRAMSys/library/src/controller/refresh/RefreshManagerSameBank.cpp +++ b/DRAMSys/library/src/controller/refresh/RefreshManagerSameBank.cpp @@ -214,7 +214,7 @@ sc_time RefreshManagerSameBank::start() for (auto bankIt = allBankMachines.begin(); bankIt != allBankMachines.end(); bankIt++) { - for (auto groupIt: *bankIt) + for (auto groupIt : *bankIt) { if (groupIt->getRefreshManagementCounter() >= memSpec->getRAAMMT()) { @@ -222,9 +222,9 @@ sc_time RefreshManagerSameBank::start() currentIterator = bankIt; break; } - else if (groupIt->getRefreshManagementCounter() >= memSpec->getRAAMMT()) + else if (groupIt->getRefreshManagementCounter() >= memSpec->getRAAIMT()) { - imtCandidates.emplace_back(currentIterator); + imtCandidates.emplace_back(bankIt); } } } @@ -232,7 +232,7 @@ sc_time RefreshManagerSameBank::start() if (mmtReached) { nextCommand = Command::RFMSB; - for (auto groupIt: *currentIterator) + for (auto groupIt : *currentIterator) { groupIt->block(); if (groupIt->isActivated()) @@ -246,10 +246,10 @@ sc_time RefreshManagerSameBank::start() { // search for IMT candidates and check if all banks idle bool allGroupsBusy = true; - for (auto candidateIt: imtCandidates) + for (auto candidateIt : imtCandidates) { bool groupIsBusy = false; - for (auto groupIt: *candidateIt) + for (auto groupIt : *candidateIt) { if (!groupIt->isIdle()) { @@ -267,7 +267,7 @@ sc_time RefreshManagerSameBank::start() if (!allGroupsBusy) { nextCommand = Command::RFMSB; - for (auto it: *currentIterator) + for (auto it : *currentIterator) { if (it->isActivated()) {