From bb0aba0758cc30a0ff893015e3aeca2cde2bbbc9 Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Tue, 9 Nov 2021 15:24:19 +0100 Subject: [PATCH] Various fixes - Don't use unordered sets for addressmapping - Don't use unordered sets for tracesetup - XOR bits weren't added - NoRefresh policy was fixed --- .../src/common/configuration/AddressMapping.h | 15 +++++++-------- .../src/common/configuration/TraceSetup.cpp | 2 +- .../library/src/common/configuration/TraceSetup.h | 3 +-- .../src/common/configuration/tests/simpletest.cpp | 10 +++++----- DRAMSys/library/src/simulation/AddressDecoder.cpp | 8 ++++++++ 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/DRAMSys/library/src/common/configuration/AddressMapping.h b/DRAMSys/library/src/common/configuration/AddressMapping.h index 28a6c097..72884f1f 100644 --- a/DRAMSys/library/src/common/configuration/AddressMapping.h +++ b/DRAMSys/library/src/common/configuration/AddressMapping.h @@ -39,7 +39,6 @@ #include "util.h" #include -#include namespace DRAMSysConfiguration { @@ -58,13 +57,13 @@ void from_json(const json &j, XorPair &x); struct AddressMapping { - Optional> byteBits; - std::unordered_set coloumnBits; - std::unordered_set bankBits; - Optional> bankGroupBits; - std::unordered_set rowBits; - Optional> channelBits; - Optional> rankBits; + Optional> byteBits; + std::vector coloumnBits; + std::vector bankBits; + Optional> bankGroupBits; + std::vector rowBits; + Optional> channelBits; + Optional> rankBits; Optional> xorBits; }; diff --git a/DRAMSys/library/src/common/configuration/TraceSetup.cpp b/DRAMSys/library/src/common/configuration/TraceSetup.cpp index f2dd330e..33cf0f8b 100644 --- a/DRAMSys/library/src/common/configuration/TraceSetup.cpp +++ b/DRAMSys/library/src/common/configuration/TraceSetup.cpp @@ -132,7 +132,7 @@ void from_json(const json &j, TraceSetup &c) if (initiator_j.contains("maxPendingWriteRequests")) initiator_j.at("maxPendingWriteRequests").get_to(initiator->maxPendingWriteRequests); - c.initiators.emplace(std::move(initiator)); + c.initiators.emplace_back(std::move(initiator)); } } diff --git a/DRAMSys/library/src/common/configuration/TraceSetup.h b/DRAMSys/library/src/common/configuration/TraceSetup.h index 2a84bd61..edc61d8c 100644 --- a/DRAMSys/library/src/common/configuration/TraceSetup.h +++ b/DRAMSys/library/src/common/configuration/TraceSetup.h @@ -40,7 +40,6 @@ #include #include -#include namespace DRAMSysConfiguration { @@ -103,7 +102,7 @@ struct TraceHammer : public TrafficInitiator struct TraceSetup { - std::unordered_set> initiators; + std::vector> initiators; }; void to_json(json &j, const TraceSetup &c); diff --git a/DRAMSys/library/src/common/configuration/tests/simpletest.cpp b/DRAMSys/library/src/common/configuration/tests/simpletest.cpp index 221b062c..de8ff9a4 100644 --- a/DRAMSys/library/src/common/configuration/tests/simpletest.cpp +++ b/DRAMSys/library/src/common/configuration/tests/simpletest.cpp @@ -153,11 +153,11 @@ std::unique_ptr getTraceHammer() DRAMSysConfiguration::TraceSetup getTraceSetup() { - std::unordered_set> initiators; - initiators.emplace(getTracePlayer()); - initiators.emplace(getTraceGeneratorRandom()); - initiators.emplace(getTraceGeneratorSequential()); - initiators.emplace(getTraceHammer()); + std::vector> initiators; + initiators.emplace_back(getTracePlayer()); + initiators.emplace_back(getTraceGeneratorRandom()); + initiators.emplace_back(getTraceGeneratorSequential()); + initiators.emplace_back(getTraceHammer()); return DRAMSysConfiguration::TraceSetup{initiators}; } diff --git a/DRAMSys/library/src/simulation/AddressDecoder.cpp b/DRAMSys/library/src/simulation/AddressDecoder.cpp index 7e18bf11..824f45ce 100644 --- a/DRAMSys/library/src/simulation/AddressDecoder.cpp +++ b/DRAMSys/library/src/simulation/AddressDecoder.cpp @@ -70,6 +70,14 @@ AddressDecoder::AddressDecoder(const DRAMSysConfiguration::AddressMapping &addre std::copy(byteBits.begin(), byteBits.end(), std::back_inserter(vByteBits)); } + if (addressMapping.xorBits.isValid()) + { + for (const auto &xorBit : addressMapping.xorBits.getValue()) + { + vXor.emplace_back(xorBit.first, xorBit.second); + } + } + std::copy(addressMapping.bankBits.begin(), addressMapping.bankBits.end(), std::back_inserter(vBankBits)); std::copy(addressMapping.rowBits.begin(), addressMapping.rowBits.end(), std::back_inserter(vRowBits)); std::copy(addressMapping.coloumnBits.begin(), addressMapping.coloumnBits.end(), std::back_inserter(vColumnBits));