diff --git a/DRAMSys/library/src/controller/cmdmux/CmdMuxOldest.cpp b/DRAMSys/library/src/controller/cmdmux/CmdMuxOldest.cpp index 657d1abe..a64bde58 100644 --- a/DRAMSys/library/src/controller/cmdmux/CmdMuxOldest.cpp +++ b/DRAMSys/library/src/controller/cmdmux/CmdMuxOldest.cpp @@ -60,13 +60,10 @@ CommandTuple::Type CmdMuxOldest::selectCommand(const ReadyCommands &readyCommand lastPayloadID = newPayloadID; result = it; } - else if (newTimestamp == lastTimestamp) + else if ((newTimestamp == lastTimestamp) && (newPayloadID < lastPayloadID)) { - if (newPayloadID < lastPayloadID) - { - lastPayloadID = newPayloadID; - result = it; - } + lastPayloadID = newPayloadID; + result = it; } } @@ -82,6 +79,7 @@ CmdMuxOldestRasCas::CmdMuxOldestRasCas() : memSpec(Configuration::getInstance(). { readyRasCommands.reserve(memSpec->numberOfBanks); readyCasCommands.reserve(memSpec->numberOfBanks); + readyRasCasCommands.reserve(2); } CommandTuple::Type CmdMuxOldestRasCas::selectCommand(const ReadyCommands &readyCommands) @@ -118,13 +116,10 @@ CommandTuple::Type CmdMuxOldestRasCas::selectCommand(const ReadyCommands &readyC lastPayloadID = newPayloadID; resultRas = it; } - else if (newTimestamp == lastTimestamp) + else if ((newTimestamp == lastTimestamp) && (newPayloadID < lastPayloadID)) { - if (newPayloadID < lastPayloadID) - { - lastPayloadID = newPayloadID; - resultRas = it; - } + lastPayloadID = newPayloadID; + resultRas = it; } } @@ -143,13 +138,10 @@ CommandTuple::Type CmdMuxOldestRasCas::selectCommand(const ReadyCommands &readyC lastPayloadID = newPayloadID; resultCas = it; } - else if (newTimestamp == lastTimestamp) + else if ((newTimestamp == lastTimestamp) && (newPayloadID < lastPayloadID)) { - if (newPayloadID < lastPayloadID) - { - lastPayloadID = newPayloadID; - resultCas = it; - } + lastPayloadID = newPayloadID; + resultCas = it; } } @@ -174,13 +166,10 @@ CommandTuple::Type CmdMuxOldestRasCas::selectCommand(const ReadyCommands &readyC lastPayloadID = newPayloadID; result = it; } - else if (newTimestamp == lastTimestamp) + else if ((newTimestamp == lastTimestamp) && (newPayloadID < lastPayloadID)) { - if (newPayloadID < lastPayloadID) - { - lastPayloadID = newPayloadID; - result = it; - } + lastPayloadID = newPayloadID; + result = it; } } diff --git a/DRAMSys/library/src/controller/cmdmux/CmdMuxStrict.cpp b/DRAMSys/library/src/controller/cmdmux/CmdMuxStrict.cpp index c2b0f9e0..ce9e97d6 100644 --- a/DRAMSys/library/src/controller/cmdmux/CmdMuxStrict.cpp +++ b/DRAMSys/library/src/controller/cmdmux/CmdMuxStrict.cpp @@ -56,39 +56,19 @@ CommandTuple::Type CmdMuxStrict::selectCommand(const ReadyCommands &readyCommand if (newTimestamp < lastTimestamp) { - if (isCasCommand(std::get(*it))) - { - if (newPayloadID == nextPayloadID) - { - lastTimestamp = newTimestamp; - lastPayloadID = newPayloadID; - result = it; - } - } - else + if (isRasCommand(std::get(*it)) || newPayloadID == nextPayloadID) { lastTimestamp = newTimestamp; lastPayloadID = newPayloadID; result = it; - } + } } - else if (newTimestamp == lastTimestamp) + else if ((newTimestamp == lastTimestamp) && (newPayloadID < lastPayloadID)) { - if (isCasCommand(std::get(*it))) + if (isRasCommand(std::get(*it)) || newPayloadID == nextPayloadID) { - if ((newPayloadID < lastPayloadID) && (newPayloadID == nextPayloadID)) - { - lastPayloadID = newPayloadID; - result = it; - } - } - else - { - if (newPayloadID < lastPayloadID) - { - lastPayloadID = newPayloadID; - result = it; - } + lastPayloadID = newPayloadID; + result = it; } } } @@ -109,6 +89,7 @@ CmdMuxStrictRasCas::CmdMuxStrictRasCas() : memSpec(Configuration::getInstance(). { readyRasCommands.reserve(memSpec->numberOfBanks); readyCasCommands.reserve(memSpec->numberOfBanks); + readyRasCasCommands.reserve(2); } CommandTuple::Type CmdMuxStrictRasCas::selectCommand(const ReadyCommands &readyCommands) @@ -145,41 +126,21 @@ CommandTuple::Type CmdMuxStrictRasCas::selectCommand(const ReadyCommands &readyC lastPayloadID = newPayloadID; resultRas = it; } - else if (newTimestamp == lastTimestamp) + else if ((newTimestamp == lastTimestamp) && (newPayloadID < lastPayloadID)) { - if (newPayloadID < lastPayloadID) - { - lastPayloadID = newPayloadID; - resultRas = it; - } + lastPayloadID = newPayloadID; + resultRas = it; } } - lastPayloadID = UINT64_MAX; - lastTimestamp = sc_max_time(); - for (auto it = readyCasCommands.cbegin(); it != readyCasCommands.cend(); it++) { - newTimestamp = std::get(*it) + - memSpec->getCommandLength(std::get(*it)); newPayloadID = DramExtension::getChannelPayloadID(std::get(*it)); if (newPayloadID == nextPayloadID) { - if (newTimestamp < lastTimestamp) - { - lastTimestamp = newTimestamp; - lastPayloadID = newPayloadID; - resultCas = it; - } - else if (newTimestamp == lastTimestamp) - { - if (newPayloadID < lastPayloadID) - { - lastPayloadID = newPayloadID; - resultCas = it; - } - } + resultCas = it; + break; } } @@ -204,13 +165,10 @@ CommandTuple::Type CmdMuxStrictRasCas::selectCommand(const ReadyCommands &readyC lastPayloadID = newPayloadID; result = it; } - else if (newTimestamp == lastTimestamp) + else if ((newTimestamp == lastTimestamp) && (newPayloadID < lastPayloadID)) { - if (newPayloadID < lastPayloadID) - { - lastPayloadID = newPayloadID; - result = it; - } + lastPayloadID = newPayloadID; + result = it; } }