From 8f6e55f9fa610e84f775731dd945de9ba77e9fc6 Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Thu, 13 Apr 2023 10:27:01 +0200 Subject: [PATCH] Enable StoreMode in new simulator and some refactoring --- .../DRAMSys/config/AddressMapping.h | 2 +- .../DRAMSys/config/ConfigUtil.cpp | 47 ------------- src/configuration/DRAMSys/config/ConfigUtil.h | 68 ------------------- .../DRAMSys/config/DRAMSysConfiguration.cpp | 2 - .../DRAMSys/config/DRAMSysConfiguration.h | 7 +- src/configuration/DRAMSys/config/McConfig.h | 2 +- src/configuration/DRAMSys/config/SimConfig.h | 2 +- src/configuration/DRAMSys/config/TraceSetup.h | 2 +- .../config/memspec/MemArchitectureSpec.h | 2 +- .../DRAMSys/config/memspec/MemPowerSpec.h | 2 +- .../DRAMSys/config/memspec/MemSpec.h | 2 +- .../DRAMSys/config/memspec/MemTimingSpec.h | 2 +- src/simulator/main.cpp | 3 +- src/util/DRAMSys/util/json.h | 4 -- 14 files changed, 12 insertions(+), 135 deletions(-) delete mode 100644 src/configuration/DRAMSys/config/ConfigUtil.cpp delete mode 100644 src/configuration/DRAMSys/config/ConfigUtil.h diff --git a/src/configuration/DRAMSys/config/AddressMapping.h b/src/configuration/DRAMSys/config/AddressMapping.h index 333f6b38..53d285ef 100644 --- a/src/configuration/DRAMSys/config/AddressMapping.h +++ b/src/configuration/DRAMSys/config/AddressMapping.h @@ -36,7 +36,7 @@ #ifndef DRAMSYSCONFIGURATION_ADDRESSMAPPING_H #define DRAMSYSCONFIGURATION_ADDRESSMAPPING_H -#include "DRAMSys/config/ConfigUtil.h" +#include "DRAMSys/util/json.h" #include diff --git a/src/configuration/DRAMSys/config/ConfigUtil.cpp b/src/configuration/DRAMSys/config/ConfigUtil.cpp deleted file mode 100644 index 9c57324c..00000000 --- a/src/configuration/DRAMSys/config/ConfigUtil.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2021, Technische Universität Kaiserslautern - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: - * Derek Christ - */ - -#include "ConfigUtil.h" - -#include "DRAMSys/config/DRAMSysConfiguration.h" - -#include -#include -#include - -namespace DRAMSys::Config -{ - -} // namespace DRAMSys::Config diff --git a/src/configuration/DRAMSys/config/ConfigUtil.h b/src/configuration/DRAMSys/config/ConfigUtil.h deleted file mode 100644 index 81fe55ea..00000000 --- a/src/configuration/DRAMSys/config/ConfigUtil.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2021, Technische Universität Kaiserslautern - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: - * Derek Christ - */ - -#ifndef DRAMSYSCONFIGURATION_UTIL_H -#define DRAMSYSCONFIGURATION_UTIL_H - -#include "DRAMSys/util/json.h" - -#include -#include - -namespace DRAMSys::Config -{ - template - void invalidateEnum(T& value) - { - if (value.has_value() && value.value() == T::value_type::Invalid) - value.reset(); - } - - inline void remove_null_values(json_t& j) - { - std::vector keysToRemove; - - for (const auto& element : j.items()) - { - if (element.value() == nullptr) - keysToRemove.emplace_back(element.key()); - } - - std::for_each(keysToRemove.begin(), keysToRemove.end(), [&](const std::string& key) { j.erase(key); }); - } - -} // namespace DRAMSys::Config - -#endif // DRAMSYSCONFIGURATION_UTIL_H diff --git a/src/configuration/DRAMSys/config/DRAMSysConfiguration.cpp b/src/configuration/DRAMSys/config/DRAMSysConfiguration.cpp index 33d2d81a..324929fd 100644 --- a/src/configuration/DRAMSys/config/DRAMSysConfiguration.cpp +++ b/src/configuration/DRAMSys/config/DRAMSysConfiguration.cpp @@ -35,8 +35,6 @@ #include "DRAMSysConfiguration.h" -#include "ConfigUtil.h" - #include #include diff --git a/src/configuration/DRAMSys/config/DRAMSysConfiguration.h b/src/configuration/DRAMSys/config/DRAMSysConfiguration.h index 18e45805..ada4f444 100644 --- a/src/configuration/DRAMSys/config/DRAMSysConfiguration.h +++ b/src/configuration/DRAMSys/config/DRAMSysConfiguration.h @@ -41,19 +41,16 @@ #include "DRAMSys/config/SimConfig.h" #include "DRAMSys/config/TraceSetup.h" #include "DRAMSys/config/memspec/MemSpec.h" -#include "DRAMSys/config/ConfigUtil.h" #include #include /** - * To support polymorphic configurations, a Json "type" tag is used - * to determine the correct type before further parsing. - * * To support optional values, std::optional is used. The default * values will be provided by DRAMSys itself. * - * To achieve static polymorphism, std::variant is used. + * To achieve static polymorphism, std::variant is used. The concrete + * type is determined by the provided fields automatically. * * To achieve backwards compatibility, this library manipulates the json * data type as it is parsed in to substitute paths to sub-configurations diff --git a/src/configuration/DRAMSys/config/McConfig.h b/src/configuration/DRAMSys/config/McConfig.h index 361716b6..79437024 100644 --- a/src/configuration/DRAMSys/config/McConfig.h +++ b/src/configuration/DRAMSys/config/McConfig.h @@ -36,7 +36,7 @@ #ifndef DRAMSYSCONFIGURATION_MCCONFIG_H #define DRAMSYSCONFIGURATION_MCCONFIG_H -#include "DRAMSys/config/ConfigUtil.h" +#include "DRAMSys/util/json.h" #include #include diff --git a/src/configuration/DRAMSys/config/SimConfig.h b/src/configuration/DRAMSys/config/SimConfig.h index d7d0376b..a05da277 100644 --- a/src/configuration/DRAMSys/config/SimConfig.h +++ b/src/configuration/DRAMSys/config/SimConfig.h @@ -36,7 +36,7 @@ #ifndef DRAMSYSCONFIGURATION_SIMCONFIG_H #define DRAMSYSCONFIGURATION_SIMCONFIG_H -#include "DRAMSys/config/ConfigUtil.h" +#include "DRAMSys/util/json.h" #include diff --git a/src/configuration/DRAMSys/config/TraceSetup.h b/src/configuration/DRAMSys/config/TraceSetup.h index 54c1fd25..1b67c82e 100644 --- a/src/configuration/DRAMSys/config/TraceSetup.h +++ b/src/configuration/DRAMSys/config/TraceSetup.h @@ -36,7 +36,7 @@ #ifndef DRAMSYSCONFIGURATION_TRACESETUP_H #define DRAMSYSCONFIGURATION_TRACESETUP_H -#include "DRAMSys/config/ConfigUtil.h" +#include "DRAMSys/util/json.h" #include #include diff --git a/src/configuration/DRAMSys/config/memspec/MemArchitectureSpec.h b/src/configuration/DRAMSys/config/memspec/MemArchitectureSpec.h index 328140a4..d3424cd8 100644 --- a/src/configuration/DRAMSys/config/memspec/MemArchitectureSpec.h +++ b/src/configuration/DRAMSys/config/memspec/MemArchitectureSpec.h @@ -36,7 +36,7 @@ #ifndef DRAMSYSCONFIGURATION_MEMARCHITECTURESPEC_H #define DRAMSYSCONFIGURATION_MEMARCHITECTURESPEC_H -#include "DRAMSys/config/ConfigUtil.h" +#include "DRAMSys/util/json.h" #include diff --git a/src/configuration/DRAMSys/config/memspec/MemPowerSpec.h b/src/configuration/DRAMSys/config/memspec/MemPowerSpec.h index 1c85879f..4099bc90 100644 --- a/src/configuration/DRAMSys/config/memspec/MemPowerSpec.h +++ b/src/configuration/DRAMSys/config/memspec/MemPowerSpec.h @@ -36,7 +36,7 @@ #ifndef DRAMSYSCONFIGURATION_MEMPOWERSPEC_H #define DRAMSYSCONFIGURATION_MEMPOWERSPEC_H -#include "DRAMSys/config/ConfigUtil.h" +#include "DRAMSys/util/json.h" #include diff --git a/src/configuration/DRAMSys/config/memspec/MemSpec.h b/src/configuration/DRAMSys/config/memspec/MemSpec.h index 4521534b..adb00acf 100644 --- a/src/configuration/DRAMSys/config/memspec/MemSpec.h +++ b/src/configuration/DRAMSys/config/memspec/MemSpec.h @@ -36,7 +36,7 @@ #ifndef DRAMSYSCONFIGURATION_MEMSPEC_H #define DRAMSYSCONFIGURATION_MEMSPEC_H -#include "DRAMSys/config/ConfigUtil.h" +#include "DRAMSys/util/json.h" #include "DRAMSys/config/memspec/MemArchitectureSpec.h" #include "DRAMSys/config/memspec/MemPowerSpec.h" #include "DRAMSys/config/memspec/MemTimingSpec.h" diff --git a/src/configuration/DRAMSys/config/memspec/MemTimingSpec.h b/src/configuration/DRAMSys/config/memspec/MemTimingSpec.h index 4f68bc06..435f3e3a 100644 --- a/src/configuration/DRAMSys/config/memspec/MemTimingSpec.h +++ b/src/configuration/DRAMSys/config/memspec/MemTimingSpec.h @@ -36,7 +36,7 @@ #ifndef DRAMSYSCONFIGURATION_MEMTIMINGSPEC_H #define DRAMSYSCONFIGURATION_MEMTIMINGSPEC_H -#include "DRAMSys/config/ConfigUtil.h" +#include "DRAMSys/util/json.h" #include diff --git a/src/simulator/main.cpp b/src/simulator/main.cpp index e35ddc8f..66fbf903 100644 --- a/src/simulator/main.cpp +++ b/src/simulator/main.cpp @@ -84,7 +84,8 @@ int sc_main(int argc, char **argv) dramSys = std::make_unique("DRAMSys", configuration); } - MemoryManager memoryManager(false); + bool storageEnabled = dramSys->getConfig().storeMode == Configuration::StoreMode::Store; + MemoryManager memoryManager(storageEnabled); std::vector> initiators; diff --git a/src/util/DRAMSys/util/json.h b/src/util/DRAMSys/util/json.h index 8c09489e..ae8c047c 100644 --- a/src/util/DRAMSys/util/json.h +++ b/src/util/DRAMSys/util/json.h @@ -1,9 +1,5 @@ /* -<<<<<<< HEAD * Copyright (c) 2021, Technische Universität Kaiserslautern -======= - * Copyright (c) 2021, Technische Universit�t Kaiserslautern ->>>>>>> 6a800d9a (Refactor SimConfig to use new jsonify macro) * All rights reserved. * * Redistribution and use in source and binary forms, with or without