mem: Minimize the use of MemObject.
authorGabe Black <gabeblack@google.com>
Tue, 23 Apr 2019 02:45:10 +0000 (19:45 -0700)
committerGabe Black <gabeblack@google.com>
Sun, 28 Apr 2019 01:19:40 +0000 (01:19 +0000)
MemObject doesn't provide anything beyond its base ClockedObject any
more, so this change removes it from most inheritance hierarchies.
Occasionally MemObject is replaced with SimObject when I was fairly
confident that the extra functionality of ClockedObject wasn't needed.

Change-Id: Ic014ab61e56402e62548e8c831eb16e26523fdce
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18289
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

105 files changed:
src/arch/arm/ArmTLB.py
src/arch/arm/table_walker.cc
src/arch/arm/table_walker.hh
src/arch/generic/BaseTLB.py
src/arch/generic/tlb.hh
src/arch/x86/X86TLB.py
src/arch/x86/pagetable_walker.cc
src/arch/x86/pagetable_walker.hh
src/cpu/BaseCPU.py
src/cpu/base.cc
src/cpu/base.hh
src/cpu/o3/checker.cc
src/cpu/o3/cpu.hh
src/cpu/simple/base.cc
src/cpu/testers/directedtest/RubyDirectedTester.cc
src/cpu/testers/directedtest/RubyDirectedTester.hh
src/cpu/testers/directedtest/RubyDirectedTester.py
src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.cc
src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.hh
src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.py
src/cpu/testers/memtest/MemTest.py
src/cpu/testers/memtest/memtest.cc
src/cpu/testers/memtest/memtest.hh
src/cpu/testers/rubytest/RubyTester.cc
src/cpu/testers/rubytest/RubyTester.hh
src/cpu/testers/rubytest/RubyTester.py
src/cpu/testers/traffic_gen/BaseTrafficGen.py
src/cpu/testers/traffic_gen/base.cc
src/cpu/testers/traffic_gen/base.hh
src/cpu/thread_state.hh
src/dev/Device.py
src/dev/dma_device.cc
src/dev/dma_device.hh
src/dev/io_device.cc
src/dev/io_device.hh
src/dev/x86/intdev.hh
src/doc/memory_system.doxygen
src/gpu-compute/GPU.py
src/gpu-compute/LdsState.py
src/gpu-compute/X86GPUTLB.py
src/gpu-compute/compute_unit.cc
src/gpu-compute/compute_unit.hh
src/gpu-compute/gpu_tlb.cc
src/gpu-compute/gpu_tlb.hh
src/gpu-compute/lds_state.cc
src/gpu-compute/lds_state.hh
src/gpu-compute/tlb_coalescer.cc
src/gpu-compute/tlb_coalescer.hh
src/mem/AbstractMemory.py
src/mem/AddrMapper.py
src/mem/Bridge.py
src/mem/CommMonitor.py
src/mem/ExternalMaster.py
src/mem/ExternalSlave.py
src/mem/MemChecker.py
src/mem/MemDelay.py
src/mem/SerialLink.py
src/mem/XBar.py
src/mem/abstract_mem.cc
src/mem/abstract_mem.hh
src/mem/addr_mapper.cc
src/mem/addr_mapper.hh
src/mem/bridge.cc
src/mem/bridge.hh
src/mem/cache/Cache.py
src/mem/cache/base.cc
src/mem/cache/base.hh
src/mem/comm_monitor.cc
src/mem/comm_monitor.hh
src/mem/dram_ctrl.cc
src/mem/dramsim2.cc
src/mem/external_master.cc
src/mem/external_master.hh
src/mem/external_slave.cc
src/mem/external_slave.hh
src/mem/mem_checker_monitor.cc
src/mem/mem_checker_monitor.hh
src/mem/mem_delay.cc
src/mem/mem_delay.hh
src/mem/mport.hh
src/mem/packet.hh
src/mem/port.cc
src/mem/port.hh
src/mem/qos/mem_sink.cc
src/mem/qport.hh
src/mem/ruby/network/dummy_port.hh
src/mem/ruby/slicc_interface/AbstractController.cc
src/mem/ruby/slicc_interface/AbstractController.hh
src/mem/ruby/slicc_interface/Controller.py
src/mem/ruby/system/RubyPort.cc
src/mem/ruby/system/RubyPort.hh
src/mem/ruby/system/Sequencer.py
src/mem/ruby/system/WeightedLRUReplacementPolicy.py
src/mem/serial_link.cc
src/mem/serial_link.hh
src/mem/simple_mem.cc
src/mem/tport.cc
src/mem/tport.hh
src/mem/xbar.cc
src/mem/xbar.hh
src/python/m5/SimObject.py
src/sim/System.py
src/sim/cxx_manager.cc
src/sim/system.cc
src/sim/system.hh

index c5a8122ddd3c979ca76b474ca58692ac3f93e7c9..4a6b3e7cd15147e3743acb6d4bdb38793aad018c 100644 (file)
 from m5.SimObject import SimObject
 from m5.params import *
 from m5.proxy import *
-from m5.objects.MemObject import MemObject
 from m5.objects.BaseTLB import BaseTLB
+from m5.objects.ClockedObject import ClockedObject
 
 # Basic stage 1 translation objects
-class ArmTableWalker(MemObject):
+class ArmTableWalker(ClockedObject):
     type = 'ArmTableWalker'
     cxx_class = 'ArmISA::TableWalker'
     cxx_header = "arch/arm/table_walker.hh"
index d310e9ee69637519e2e10cfde7fd59d9a525141b..6f06b7112f0f1bde319b3d1497fc87e7857a8ce3 100644 (file)
@@ -57,7 +57,7 @@
 using namespace ArmISA;
 
 TableWalker::TableWalker(const Params *p)
-    : MemObject(p),
+    : ClockedObject(p),
       stage2Mmu(NULL), port(NULL), masterId(Request::invldMasterId),
       isStage2(p->is_stage2), tlb(NULL),
       currState(NULL), pending(false),
@@ -124,7 +124,7 @@ TableWalker::getPort(const std::string &if_name, PortID idx)
             fatal("Cannot access table walker port through stage-two walker\n");
         }
     }
-    return MemObject::getPort(if_name, idx);
+    return ClockedObject::getPort(if_name, idx);
 }
 
 TableWalker::WalkerState::WalkerState() :
index 8176fc7f55b729ebbdcda7ecdfaccf63f9b6b972..752b57a64d29e66d943f41dc89b440c95bf99e37 100644 (file)
@@ -48,6 +48,7 @@
 #include "arch/arm/tlb.hh"
 #include "mem/request.hh"
 #include "params/ArmTableWalker.hh"
+#include "sim/clocked_object.hh"
 #include "sim/eventq.hh"
 
 class ThreadContext;
@@ -59,7 +60,7 @@ class Translation;
 class TLB;
 class Stage2MMU;
 
-class TableWalker : public MemObject
+class TableWalker : public ClockedObject
 {
   public:
     class WalkerState;
index 688117a6686ae3dc5483f5b8fc42365667aa490f..64531b9c55936ad7d242f00c9e1e39eeec162719 100644 (file)
@@ -29,9 +29,9 @@
 #          Ivan Pizarro
 
 from m5.params import *
-from m5.objects.MemObject import MemObject
+from m5.SimObject import SimObject
 
-class BaseTLB(MemObject):
+class BaseTLB(SimObject):
     type = 'BaseTLB'
     abstract = True
     cxx_header = "arch/generic/tlb.hh"
index ba07b1057ce8d02c621df15edbcc9b33f2b3ce0a..cd33ef4c9e92933db024bca7d6ab61e9098d8bb2 100644 (file)
 #define __ARCH_GENERIC_TLB_HH__
 
 #include "base/logging.hh"
-#include "mem/mem_object.hh"
 #include "mem/request.hh"
+#include "sim/sim_object.hh"
 
 class ThreadContext;
 class BaseMasterPort;
 
-class BaseTLB : public MemObject
+class BaseTLB : public SimObject
 {
   protected:
-    BaseTLB(const Params *p)
-        : MemObject(p)
-    {}
+    BaseTLB(const Params *p) : SimObject(p) {}
 
   public:
 
index 1b2f63d1d8a4a81035b422ce361a61fcb4cfda25..2e61d027f2bfea9fba488dc0c8a1f7aac19e6ca3 100644 (file)
@@ -39,9 +39,9 @@ from m5.params import *
 from m5.proxy import *
 
 from m5.objects.BaseTLB import BaseTLB
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class X86PagetableWalker(MemObject):
+class X86PagetableWalker(ClockedObject):
     type = 'X86PagetableWalker'
     cxx_class = 'X86ISA::Walker'
     cxx_header = 'arch/x86/pagetable_walker.hh'
index 0741dc2ed831d3e8f34ea6f9186200bb6f59864b..932eb8eefbe15a56dbeff52f0dd6c7d8b9905bc7 100644 (file)
@@ -173,7 +173,7 @@ Walker::getPort(const std::string &if_name, PortID idx)
     if (if_name == "port")
         return port;
     else
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
 }
 
 void
index c1f4ed2c433fa3934b6ccdaaea644fa07339052d..88b8147cf947fecea2daa155eac6e6aa58090c03 100644 (file)
@@ -45,9 +45,9 @@
 #include "arch/x86/pagetable.hh"
 #include "arch/x86/tlb.hh"
 #include "base/types.hh"
-#include "mem/mem_object.hh"
 #include "mem/packet.hh"
 #include "params/X86PagetableWalker.hh"
+#include "sim/clocked_object.hh"
 #include "sim/faults.hh"
 #include "sim/system.hh"
 
@@ -55,7 +55,7 @@ class ThreadContext;
 
 namespace X86ISA
 {
-    class Walker : public MemObject
+    class Walker : public ClockedObject
     {
       protected:
         // Port for accessing memory
@@ -201,7 +201,7 @@ namespace X86ISA
         }
 
         Walker(const Params *params) :
-            MemObject(params), port(name() + ".port", this),
+            ClockedObject(params), port(name() + ".port", this),
             funcState(this, NULL, NULL, true), tlb(NULL), sys(params->system),
             masterId(sys->getMasterId(this)),
             numSquashable(params->num_squash_per_cycle),
index 93cb6e07195691a4594b07f8547ef0e073bf2289..6dd460cbed5e9e3ecf0b1ef8af1f98de08a596e3 100644 (file)
@@ -52,10 +52,10 @@ from m5.params import *
 from m5.proxy import *
 from m5.util.fdthelper import *
 
+from m5.objects.ClockedObject import ClockedObject
 from m5.objects.XBar import L2XBar
 from m5.objects.InstTracer import InstTracer
 from m5.objects.CPUTracers import ExeTracer
-from m5.objects.MemObject import MemObject
 from m5.objects.SubSystem import SubSystem
 from m5.objects.ClockDomain import *
 from m5.objects.Platform import Platform
@@ -99,7 +99,7 @@ elif buildEnv['TARGET_ISA'] == 'riscv':
     from m5.objects.RiscvISA import RiscvISA
     default_isa_class = RiscvISA
 
-class BaseCPU(MemObject):
+class BaseCPU(ClockedObject):
     type = 'BaseCPU'
     abstract = True
     cxx_header = "cpu/base.hh"
index 8e49fb1036bec3ebba0ede3b45c82d5f5a6ff31b..a9f68bb26618a94aaf7ddf0ecb95a3c0c963c41b 100644 (file)
@@ -126,7 +126,7 @@ CPUProgressEvent::description() const
 }
 
 BaseCPU::BaseCPU(Params *p, bool is_checker)
-    : MemObject(p), instCnt(0), _cpuId(p->cpu_id), _socketId(p->socket_id),
+    : ClockedObject(p), instCnt(0), _cpuId(p->cpu_id), _socketId(p->socket_id),
       _instMasterId(p->system->getMasterId(this, "inst")),
       _dataMasterId(p->system->getMasterId(this, "data")),
       _taskId(ContextSwitchTaskId::Unknown), _pid(invldPid),
@@ -421,7 +421,7 @@ BaseCPU::probeInstCommit(const StaticInstPtr &inst, Addr pc)
 void
 BaseCPU::regStats()
 {
-    MemObject::regStats();
+    ClockedObject::regStats();
 
     using namespace Stats;
 
@@ -462,7 +462,7 @@ BaseCPU::getPort(const string &if_name, PortID idx)
     else if (if_name == "icache_port")
         return getInstPort();
     else
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
 }
 
 void
index f9b24b923748bc1a723573dee12e633b533c0f40..f013a3e02b6fe98c2eeeb4dc7ebb17126e217106 100644 (file)
@@ -58,7 +58,7 @@
 #include "arch/isa_traits.hh"
 #include "arch/microcode_rom.hh"
 #include "base/statistics.hh"
-#include "mem/mem_object.hh"
+#include "sim/clocked_object.hh"
 #include "sim/eventq.hh"
 #include "sim/full_system.hh"
 #include "sim/insttracer.hh"
@@ -106,7 +106,7 @@ class CPUProgressEvent : public Event
     virtual const char *description() const;
 };
 
-class BaseCPU : public MemObject
+class BaseCPU : public ClockedObject
 {
   protected:
 
index 970af530059825273877df03ff2faff7e28ab43b..16c5a8704659a116d7547fdd6e0b1d952eb9681c 100644 (file)
@@ -45,8 +45,6 @@
 #include "cpu/checker/cpu_impl.hh"
 #include "params/O3Checker.hh"
 
-class MemObject;
-
 template
 class Checker<O3CPUImpl>;
 
index 21cae444b141e54455826f4af3941dbd10f7b473..c2c48535f92867df85d4c1333b2f2a3f2d1fc102 100644 (file)
@@ -76,7 +76,6 @@ template <class>
 class O3ThreadContext;
 
 class Checkpoint;
-class MemObject;
 class Process;
 
 struct BaseCPUParams;
index 49bc1ad73e6d39ce3a8c390b2cfc262b007235ff..b687a17e05cb10231abe22a00785d4ec36dd3f85 100644 (file)
@@ -70,7 +70,6 @@
 #include "debug/Decode.hh"
 #include "debug/Fetch.hh"
 #include "debug/Quiesce.hh"
-#include "mem/mem_object.hh"
 #include "mem/packet.hh"
 #include "mem/request.hh"
 #include "params/BaseSimpleCPU.hh"
index cd367b4985bd8166fa76c778e8b8f64ae9a29493..afe2b14470d1b5af6802ae8c1e5782d014ea4f49 100644 (file)
@@ -47,7 +47,7 @@
 #include "sim/sim_exit.hh"
 
 RubyDirectedTester::RubyDirectedTester(const Params *p)
-  : MemObject(p),
+  : ClockedObject(p),
     directedStartEvent([this]{ wakeup(); }, "Directed tick",
                        false, Event::CPU_Tick_Pri),
     m_requests_to_complete(p->requests_to_complete),
@@ -83,7 +83,7 @@ RubyDirectedTester::getPort(const std::string &if_name, PortID idx)
 {
     if (if_name != "cpuPort") {
         // pass it along to our super class
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
     } else {
         if (idx >= static_cast<int>(ports.size())) {
             panic("RubyDirectedTester::getPort: unknown index %d\n", idx);
index 740843562d38e744dfb4d02935e0eab7bbabfcdd..f0c694e827b803e650fbdf6bb1a2f86e680d08b6 100644 (file)
 #include <string>
 #include <vector>
 
+#include "mem/packet.hh"
+#include "mem/port.hh"
 #include "mem/ruby/common/DataBlock.hh"
 #include "mem/ruby/common/SubBlock.hh"
 #include "mem/ruby/common/TypeDefines.hh"
-#include "mem/mem_object.hh"
-#include "mem/packet.hh"
 #include "params/RubyDirectedTester.hh"
+#include "sim/clocked_object.hh"
 
 class DirectedGenerator;
 
-class RubyDirectedTester : public MemObject
+class RubyDirectedTester : public ClockedObject
 {
   public:
     class CpuPort : public MasterPort
index 9f90c9b41c1433b86a55a1f96d0456d6f963eaf7..5b513e42e3ffc7bdb287a528618eb79caee42858 100644 (file)
@@ -30,7 +30,7 @@ from m5.SimObject import SimObject
 from m5.params import *
 from m5.proxy import *
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
 class DirectedGenerator(SimObject):
     type = 'DirectedGenerator'
@@ -52,7 +52,7 @@ class InvalidateGenerator(DirectedGenerator):
     cxx_header = "cpu/testers/directedtest/InvalidateGenerator.hh"
     addr_increment_size = Param.Int(64, "address increment size")
 
-class RubyDirectedTester(MemObject):
+class RubyDirectedTester(ClockedObject):
     type = 'RubyDirectedTester'
     cxx_header = "cpu/testers/directedtest/RubyDirectedTester.hh"
     cpuPort = VectorMasterPort("the cpu ports")
index 1a07205e68ca372b68d859f40a0a57b1ec682be5..5b542bc199a8d3a5dfd1f2fd385f149c012083e2 100644 (file)
@@ -40,7 +40,6 @@
 #include "base/random.hh"
 #include "base/statistics.hh"
 #include "debug/GarnetSyntheticTraffic.hh"
-#include "mem/mem_object.hh"
 #include "mem/packet.hh"
 #include "mem/port.hh"
 #include "mem/request.hh"
@@ -75,7 +74,7 @@ GarnetSyntheticTraffic::sendPkt(PacketPtr pkt)
 }
 
 GarnetSyntheticTraffic::GarnetSyntheticTraffic(const Params *p)
-    : MemObject(p),
+    : ClockedObject(p),
       tickEvent([this]{ tick(); }, "GarnetSyntheticTraffic tick",
                 false, Event::CPU_Tick_Pri),
       cachePort("GarnetSyntheticTraffic", this),
@@ -116,7 +115,7 @@ GarnetSyntheticTraffic::getPort(const std::string &if_name, PortID idx)
     if (if_name == "test")
         return cachePort;
     else
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
 }
 
 void
index 7f9ca5f7cddb73d4b657f104e10657dcb1119e38..3e77e9e0c1d44144e402fba2e03ebd4f4a764740 100644 (file)
@@ -34,9 +34,9 @@
 #include <set>
 
 #include "base/statistics.hh"
-#include "mem/mem_object.hh"
 #include "mem/port.hh"
 #include "params/GarnetSyntheticTraffic.hh"
+#include "sim/clocked_object.hh"
 #include "sim/eventq.hh"
 #include "sim/sim_exit.hh"
 #include "sim/sim_object.hh"
@@ -53,7 +53,7 @@ enum TrafficType {BIT_COMPLEMENT_ = 0,
                   NUM_TRAFFIC_PATTERNS_};
 
 class Packet;
-class GarnetSyntheticTraffic : public MemObject
+class GarnetSyntheticTraffic : public ClockedObject
 {
   public:
     typedef GarnetSyntheticTrafficParams Params;
index 4c7772348b4ce460129e73ed5e46e949a6313627..ba99db45521d5f2ad68ae21ea8670882f9e4c73c 100644 (file)
 #
 # Authors: Tushar Krishna
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 from m5.params import *
 from m5.proxy import *
 
-class GarnetSyntheticTraffic(MemObject):
+class GarnetSyntheticTraffic(ClockedObject):
     type = 'GarnetSyntheticTraffic'
     cxx_header = \
         "cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.hh"
index 5585b1f707bdacb6c9d8247ad00bd0439d1015fb..b4eb0b5288290504c9f2fc894e94f9cfc57a96e3 100644 (file)
@@ -41,9 +41,9 @@
 from m5.params import *
 from m5.proxy import *
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class MemTest(MemObject):
+class MemTest(ClockedObject):
     type = 'MemTest'
     cxx_header = "cpu/testers/memtest/memtest.hh"
 
index 346f88246c0bef8bbec93bee495a44dd3f0a45a9..93a6ac6b9e64eb4c4727a464437629a183366c71 100644 (file)
@@ -48,7 +48,6 @@
 #include "base/statistics.hh"
 #include "base/trace.hh"
 #include "debug/MemTest.hh"
-#include "mem/mem_object.hh"
 #include "sim/sim_exit.hh"
 #include "sim/stats.hh"
 #include "sim/system.hh"
@@ -85,7 +84,7 @@ MemTest::sendPkt(PacketPtr pkt) {
 }
 
 MemTest::MemTest(const Params *p)
-    : MemObject(p),
+    : ClockedObject(p),
       tickEvent([this]{ tick(); }, name()),
       noRequestEvent([this]{ noRequest(); }, name()),
       noResponseEvent([this]{ noResponse(); }, name()),
@@ -130,7 +129,7 @@ MemTest::getPort(const std::string &if_name, PortID idx)
     if (if_name == "port")
         return port;
     else
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
 }
 
 void
@@ -197,7 +196,7 @@ MemTest::completeRequest(PacketPtr pkt, bool functional)
 void
 MemTest::regStats()
 {
-    MemObject::regStats();
+    ClockedObject::regStats();
 
     using namespace Stats;
 
index b429fed691a3c087ba52941ece1785f928b39c40..f536f03698df70d80724a4f6ecc6e3b9b5bace3c 100644 (file)
@@ -49,8 +49,9 @@
 #include <unordered_map>
 
 #include "base/statistics.hh"
-#include "mem/mem_object.hh"
+#include "mem/port.hh"
 #include "params/MemTest.hh"
+#include "sim/clocked_object.hh"
 #include "sim/eventq.hh"
 #include "sim/stats.hh"
 
@@ -67,7 +68,7 @@
  * both requests and responses, thus checking that the memory-system
  * is making progress.
  */
-class MemTest : public MemObject
+class MemTest : public ClockedObject
 {
 
   public:
index cb23688c4aca44b9c43d661550f67ff97fcca962..30af475865a2bbb5f5073cf99ec8e3db0d22258e 100644 (file)
@@ -50,7 +50,7 @@
 #include "sim/system.hh"
 
 RubyTester::RubyTester(const Params *p)
-  : MemObject(p),
+  : ClockedObject(p),
     checkStartEvent([this]{ wakeup(); }, "RubyTester tick",
                     false, Event::CPU_Tick_Pri),
     _masterId(p->system->getMasterId(this)),
@@ -134,7 +134,7 @@ RubyTester::getPort(const std::string &if_name, PortID idx)
     if (if_name != "cpuInstPort" && if_name != "cpuInstDataPort" &&
         if_name != "cpuDataPort") {
         // pass it along to our super class
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
     } else {
         if (if_name == "cpuInstPort") {
             if (idx > m_num_inst_only_ports) {
index 3ca71f608e519d36e006b5b05c5fa04daf801b59..4ac553b4ce8238b22796c4c55a0ac86ceeafa957 100644 (file)
 #include <vector>
 
 #include "cpu/testers/rubytest/CheckTable.hh"
-#include "mem/mem_object.hh"
 #include "mem/packet.hh"
+#include "mem/port.hh"
 #include "mem/ruby/common/SubBlock.hh"
 #include "mem/ruby/common/TypeDefines.hh"
 #include "params/RubyTester.hh"
+#include "sim/clocked_object.hh"
 
-class RubyTester : public MemObject
+class RubyTester : public ClockedObject
 {
   public:
     class CpuPort : public MasterPort
index 2ac1697fd371df4d0e794c8644d02eec6ee742af..ecf52b668f57b8a1bf479738d28b4bac0d08d727 100644 (file)
@@ -28,9 +28,9 @@
 from m5.params import *
 from m5.proxy import *
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class RubyTester(MemObject):
+class RubyTester(ClockedObject):
     type = 'RubyTester'
     cxx_header = "cpu/testers/rubytest/RubyTester.hh"
     num_cpus = Param.Int("number of cpus / RubyPorts")
index 94e3319d5a2dd383ab61a815409e0140420260e3..7fd8b3066f7422ccc0427ee29082a1ec034aef02 100644 (file)
@@ -39,7 +39,7 @@
 
 from m5.params import *
 from m5.proxy import *
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
 # Types of Stream Generators.
 # Those are orthogonal to the other generators in the TrafficGen
@@ -55,7 +55,7 @@ class StreamGenType(Enum): vals = [ 'none', 'fixed', 'random' ]
 # controllers, or function as a black-box replacement for system
 # components that are not yet modelled in detail, e.g. a video engine
 # or baseband subsystem in an SoC.
-class BaseTrafficGen(MemObject):
+class BaseTrafficGen(ClockedObject):
     type = 'BaseTrafficGen'
     abstract = True
     cxx_header = "cpu/testers/traffic_gen/traffic_gen.hh"
index 80fa8a9d6b7b0a836f13ae3f18c951f944b14da9..43a1b831aeef81eb35a576dd13778127bbd76bac 100644 (file)
@@ -68,7 +68,7 @@
 using namespace std;
 
 BaseTrafficGen::BaseTrafficGen(const BaseTrafficGenParams* p)
-    : MemObject(p),
+    : ClockedObject(p),
       system(p->system),
       elasticReq(p->elastic_req),
       progressCheck(p->progress_check),
@@ -94,14 +94,14 @@ BaseTrafficGen::getPort(const string &if_name, PortID idx)
     if (if_name == "port") {
         return port;
     } else {
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
     }
 }
 
 void
 BaseTrafficGen::init()
 {
-    MemObject::init();
+    ClockedObject::init();
 
     if (!port.isConnected())
         fatal("The port of %s is not connected!\n", name());
index 2443e62236c6b3acd5ef8558b7f9ffc257bd9866..811770fe41fd3f41f7ce4a18b4bc04a89f03bc10 100644 (file)
@@ -46,8 +46,8 @@
 #include <tuple>
 
 #include "base/statistics.hh"
-#include "mem/mem_object.hh"
 #include "mem/qport.hh"
+#include "sim/clocked_object.hh"
 
 class BaseGen;
 class StreamGen;
@@ -63,7 +63,7 @@ struct BaseTrafficGenParams;
  * system components that are not yet modelled in detail, e.g. a video
  * engine or baseband subsystem.
  */
-class BaseTrafficGen : public MemObject
+class BaseTrafficGen : public ClockedObject
 {
     friend class BaseGen;
 
index e3b6af9da8ca600a42e50d9ebb7663de04af8fee..574193d0ef24ff2494d6d5df680958f8914675b7 100644 (file)
@@ -36,7 +36,6 @@
 #include "cpu/base.hh"
 #include "cpu/profile.hh"
 #include "cpu/thread_context.hh"
-#include "mem/mem_object.hh"
 #include "sim/process.hh"
 
 class EndQuiesceEvent;
index c137ce66dae473376f8fef040a4dc24539b81f82..cb990104df00f984e39da84e6f4dab2d20df91e6 100644 (file)
@@ -43,9 +43,9 @@ from m5.params import *
 from m5.proxy import *
 from m5.util.fdthelper import *
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class PioDevice(MemObject):
+class PioDevice(ClockedObject):
     type = 'PioDevice'
     cxx_header = "dev/io_device.hh"
     abstract = True
index 047eef1d70d91c256cb8a8623a22191d492ac58d..327c92436c95060d723d0b14a7303c870485fd92 100644 (file)
 #include "debug/DMA.hh"
 #include "debug/Drain.hh"
 #include "mem/port_proxy.hh"
+#include "sim/clocked_object.hh"
 #include "sim/system.hh"
 
-DmaPort::DmaPort(MemObject *dev, System *s)
+DmaPort::DmaPort(ClockedObject *dev, System *s)
     : MasterPort(dev->name() + ".dma", dev),
       device(dev), sys(s), masterId(s->getMasterId(dev)),
       sendEvent([this]{ sendDma(); }, dev->name()),
index f556e14e30e97ec14dd4fccdfe8b06b2c8167e02..4ea0626544090f267fda7bfd23c319a26fd71f9f 100644 (file)
@@ -54,6 +54,8 @@
 #include "sim/drain.hh"
 #include "sim/system.hh"
 
+class ClockedObject;
+
 class DmaPort : public MasterPort, public Drainable
 {
   private:
@@ -109,7 +111,7 @@ class DmaPort : public MasterPort, public Drainable
 
   public:
     /** The device that owns this port. */
-    MemObject *const device;
+    ClockedObject *const device;
 
     /** The system that device/port are in. This is used to select which mode
      * we are currently operating in. */
@@ -141,7 +143,7 @@ class DmaPort : public MasterPort, public Drainable
 
   public:
 
-    DmaPort(MemObject *dev, System *s);
+    DmaPort(ClockedObject *dev, System *s);
 
     RequestPtr dmaAction(Packet::Command cmd, Addr addr, int size, Event *event,
                          uint8_t *data, Tick delay, Request::Flags flag = 0);
index 1cec2bf4acd34d0380b4af7ec5439ee06176fac7..425c2f41f7748abba3e52b9b1c7078f778f7b548 100644 (file)
@@ -72,7 +72,7 @@ PioPort::getAddrRanges() const
 }
 
 PioDevice::PioDevice(const Params *p)
-    : MemObject(p), sys(p->system), pioPort(this)
+    : ClockedObject(p), sys(p->system), pioPort(this)
 {}
 
 PioDevice::~PioDevice()
@@ -93,7 +93,7 @@ PioDevice::getPort(const std::string &if_name, PortID idx)
     if (if_name == "pio") {
         return pioPort;
     }
-    return MemObject::getPort(if_name, idx);
+    return ClockedObject::getPort(if_name, idx);
 }
 
 BasicPioDevice::BasicPioDevice(const Params *p, Addr size)
index 8dc3f943ac7f2e378cc05e103d077347190a6a7d..c9e25d224ac6c949df20c6e69a430ffbb111fa17 100644 (file)
 #ifndef __DEV_IO_DEVICE_HH__
 #define __DEV_IO_DEVICE_HH__
 
-#include "mem/mem_object.hh"
 #include "mem/tport.hh"
 #include "params/BasicPioDevice.hh"
 #include "params/PioDevice.hh"
+#include "sim/clocked_object.hh"
 
 class PioDevice;
 class System;
@@ -81,7 +81,7 @@ class PioPort : public SimpleTimingPort
  * mode we are in, etc is handled by the PioPort so the device doesn't have to
  * bother.
  */
-class PioDevice : public MemObject
+class PioDevice : public ClockedObject
 {
   protected:
     System *sys;
index 1a49bb3e2d2f2c2ae0ce7ad694f4eeada5dc85eb..2e3e99df060a7580fd7079a9bcd1baa96175bd7f 100644 (file)
@@ -49,7 +49,6 @@
 
 #include "arch/x86/intmessage.hh"
 #include "arch/x86/x86_traits.hh"
-#include "mem/mem_object.hh"
 #include "mem/mport.hh"
 #include "params/X86IntLine.hh"
 #include "params/X86IntSinkPin.hh"
@@ -68,7 +67,7 @@ class IntDevice
         IntDevice * device;
 
       public:
-        IntSlavePort(const std::string& _name, MemObject* _parent,
+        IntSlavePort(const std::string& _name, SimObject* _parent,
                      IntDevice* dev) :
             MessageSlavePort(_name, _parent), device(dev)
         {
@@ -92,7 +91,7 @@ class IntDevice
         IntDevice* device;
         Tick latency;
       public:
-        IntMasterPort(const std::string& _name, MemObject* _parent,
+        IntMasterPort(const std::string& _name, SimObject* _parent,
                       IntDevice* dev, Tick _latency) :
             MessageMasterPort(_name, _parent), device(dev), latency(_latency)
         {
@@ -112,7 +111,7 @@ class IntDevice
     IntMasterPort intMasterPort;
 
   public:
-    IntDevice(MemObject * parent, Tick latency = 0) :
+    IntDevice(SimObject * parent, Tick latency = 0) :
         intMasterPort(parent->name() + ".int_master", parent, this, latency)
     {
     }
index 061a289ee6fd0961bb5ac221dcce49a99d233721..4fe9820685272b9a854c00151af10fb942f1c132 100644 (file)
 
   configs/example/fs.py --caches --cpu-type=arm_detailed --num-cpus=2
 
-  Gem5 uses Memory Objects (MemObject) derived objects as basic blocks for
+  Gem5 uses Simulation Objects (SimObject) derived objects as basic blocks for
   building memory system. They are connected via ports with established
   master/slave hierarchy. Data flow is initiated on master port while the
   response messages and snoop queries appear on the slave port. The following
-  figure shows the hierarchy of Memory Objects used in this document:
+  figure shows the hierarchy of Simulation Objects used in this document:
 
-  \image html "gem5_MS_Fig1.PNG" "Memory Object hierarchy of the model" width=3cm
+  \image html "gem5_MS_Fig1.PNG" "Simulation Object hierarchy of the model" width=3cm
 
   \section gem5_CPU CPU
 
@@ -77,7 +77,7 @@
   Load & store buffers  (for read and write access) don’t impose any
   restriction on the number of active memory accesses. Therefore, the maximum
   number of outstanding CPU’s memory access requests is not limited by CPU
-  Memory Object but by underlying memory system model.
+  Simulation Object but by underlying memory system model.
 
   <b>Split memory access</b> is implemented.
 
@@ -89,7 +89,7 @@
 
   Data Cache object implements a standard cache structure:
 
-  \image html "gem5_MS_Fig2.PNG" "DCache Memory Object" width=3cm
+  \image html "gem5_MS_Fig2.PNG" "DCache Simulation Object" width=3cm
 
   <b>Cached memory reads</b> that match particular cache tag (with Valid & Read
   flags) will be completed (by sending ReadResp to CPU) after a configurable time.
index 9eb662abcc9411f465f68a07f81d9843647c503e..fee0254352c58a83790cfe4036fa145516ec4254 100644 (file)
@@ -40,7 +40,6 @@ from m5.SimObject import SimObject
 
 from m5.objects.ClockedObject import ClockedObject
 from m5.objects.Device import DmaDevice
-from m5.objects.MemObject import MemObject
 from m5.objects.Process import EmulatedDriver
 from m5.objects.Bridge import Bridge
 from m5.objects.LdsState import LdsState
@@ -72,7 +71,7 @@ class Wavefront(SimObject):
     wf_slot_id = Param.Int('wavefront id (0-ComputeUnit.max_wfs)')
     wfSize = Param.Int(64, 'Wavefront size (in work items)')
 
-class ComputeUnit(MemObject):
+class ComputeUnit(ClockedObject):
     type = 'ComputeUnit'
     cxx_class = 'ComputeUnit'
     cxx_header = 'gpu-compute/compute_unit.hh'
index f1f8cd18a5a691687479f61e63af14aa1a725aae..a21bde06e5c49b97b7960d3267d66652c70a14bc 100644 (file)
@@ -35,9 +35,9 @@ from m5.defines import buildEnv
 from m5.params import *
 from m5.proxy import *
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class LdsState(MemObject):
+class LdsState(ClockedObject):
     type = 'LdsState'
     cxx_class = 'LdsState'
     cxx_header = 'gpu-compute/lds_state.hh'
index 963e2d1473b65a60f405d547e8cf6bca46bb7976..a0ac9e9e654c4a97f502a119627afad7fdca27b6 100644 (file)
@@ -35,16 +35,17 @@ from m5.defines import buildEnv
 from m5.params import *
 from m5.proxy import *
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
+from m5.SimObject import SimObject
 
 if buildEnv['FULL_SYSTEM']:
-    class X86PagetableWalker(MemObject):
+    class X86PagetableWalker(SimObject):
         type = 'X86PagetableWalker'
         cxx_class = 'X86ISA::Walker'
         port = SlavePort("Port for the hardware table walker")
         system = Param.System(Parent.any, "system object")
 
-class X86GPUTLB(MemObject):
+class X86GPUTLB(ClockedObject):
     type = 'X86GPUTLB'
     cxx_class = 'X86ISA::GpuTLB'
     cxx_header = 'gpu-compute/gpu_tlb.hh'
@@ -64,7 +65,7 @@ class X86GPUTLB(MemObject):
     allocationPolicy = Param.Bool(True, "Allocate on an access")
     accessDistance = Param.Bool(False, "print accessDistance stats")
 
-class TLBCoalescer(MemObject):
+class TLBCoalescer(ClockedObject):
     type = 'TLBCoalescer'
     cxx_class = 'TLBCoalescer'
     cxx_header = 'gpu-compute/tlb_coalescer.hh'
index fd328adca661c759d8702df86325fcd76722a6be..a9571eed1f9acf0b7a701b267935074e93da7db7 100644 (file)
@@ -58,7 +58,7 @@
 #include "mem/page_table.hh"
 #include "sim/process.hh"
 
-ComputeUnit::ComputeUnit(const Params *p) : MemObject(p), fetchStage(p),
+ComputeUnit::ComputeUnit(const Params *p) : ClockedObject(p), fetchStage(p),
     scoreboardCheckStage(p), scheduleStage(p), execStage(p),
     globalMemoryPipe(p), localMemoryPipe(p), rrNextMemID(0), rrNextALUWp(0),
     cu_id(p->cu_id), vrf(p->vector_register_file), numSIMDs(p->num_SIMDs),
@@ -1397,7 +1397,7 @@ ComputeUnit::ITLBPort::recvReqRetry()
 void
 ComputeUnit::regStats()
 {
-    MemObject::regStats();
+    ClockedObject::regStats();
 
     vALUInsts
         .name(name() + ".valu_insts")
index cfe25d7d8ae0ceba37ad68803f88ff9071957c55..adf3c21d2dc35b85e7b421c483e068a95d30df8d 100644 (file)
@@ -53,8 +53,8 @@
 #include "gpu-compute/qstruct.hh"
 #include "gpu-compute/schedule_stage.hh"
 #include "gpu-compute/scoreboard_check_stage.hh"
-#include "mem/mem_object.hh"
 #include "mem/port.hh"
+#include "sim/clocked_object.hh"
 
 static const int MAX_REGS_FOR_NON_VEC_MEM_INST = 1;
 static const int MAX_WIDTH_FOR_MEM_INST = 32;
@@ -91,7 +91,7 @@ enum TLB_CACHE
     TLB_HIT_CACHE_HIT
 };
 
-class ComputeUnit : public MemObject
+class ComputeUnit : public ClockedObject
 {
   public:
     FetchStage fetchStage;
index c23b9986f4c225cbd61af0660abcfc01c6ad6b3e..ee405e872456dde8a5ea3e863cd828af30945fe6 100644 (file)
@@ -61,7 +61,7 @@ namespace X86ISA
 {
 
     GpuTLB::GpuTLB(const Params *p)
-        : MemObject(p), configAddress(0), size(p->size),
+        : ClockedObject(p), configAddress(0), size(p->size),
           cleanupEvent([this]{ cleanup(); }, name(), false,
                        Event::Maximum_Pri),
           exitEvent([this]{ exitCallback(); }, name())
@@ -950,7 +950,7 @@ namespace X86ISA
     void
     GpuTLB::regStats()
     {
-        MemObject::regStats();
+        ClockedObject::regStats();
 
         localNumTLBAccesses
             .name(name() + ".local_TLB_accesses")
index 80510d7a0a0941bb851f4bd4c8fa4b34b457097c..766d2d1b95c5e89c96bfac1045baef3631a91d87 100644 (file)
 #include "base/logging.hh"
 #include "base/statistics.hh"
 #include "gpu-compute/compute_unit.hh"
-#include "mem/mem_object.hh"
 #include "mem/port.hh"
 #include "mem/request.hh"
 #include "params/X86GPUTLB.hh"
+#include "sim/clocked_object.hh"
 #include "sim/sim_object.hh"
 
 class BaseTLB;
@@ -62,7 +62,7 @@ class ThreadContext;
 
 namespace X86ISA
 {
-    class GpuTLB : public MemObject
+    class GpuTLB : public ClockedObject
     {
       protected:
         friend class Walker;
index 48827c51493e82074628f2498dbd492f3aeb174c..459a7a4ccb3e1e4533e7e70be58ea155dcdc8d8c 100644 (file)
@@ -48,7 +48,7 @@
  * the default constructor that works with SWIG
  */
 LdsState::LdsState(const Params *params) :
-    MemObject(params),
+    ClockedObject(params),
     tickEvent(this),
     cuPort(name() + ".port", this),
     maximumSize(params->size),
index 05bc11ed669febb7cab67b66076d199dd17e9cdd..9b9cb126424f1f70544175bb17246393a93d69c8 100644 (file)
@@ -46,9 +46,9 @@
 
 #include "enums/MemType.hh"
 #include "gpu-compute/misc.hh"
-#include "mem/mem_object.hh"
 #include "mem/port.hh"
 #include "params/LdsState.hh"
+#include "sim/clocked_object.hh"
 
 class ComputeUnit;
 
@@ -108,7 +108,7 @@ class LdsChunk
 
 // Local Data Share (LDS) State per Wavefront (contents of the LDS region
 // allocated to the WorkGroup of this Wavefront)
-class LdsState: public MemObject
+class LdsState: public ClockedObject
 {
   protected:
 
index 3b7631a74c3e11910945943d4911744f003e270d..999007c13e6580704d1dfde225b307e273aa4d33 100644 (file)
@@ -42,7 +42,7 @@
 #include "sim/process.hh"
 
 TLBCoalescer::TLBCoalescer(const Params *p)
-    : MemObject(p),
+    : ClockedObject(p),
       clock(p->clk_domain->clockPeriod()),
       TLBProbesPerCycle(p->probesPerCycle),
       coalescingWindow(p->coalescingWindow),
@@ -525,7 +525,7 @@ TLBCoalescer::processCleanupEvent()
 void
 TLBCoalescer::regStats()
 {
-    MemObject::regStats();
+    ClockedObject::regStats();
 
     uncoalescedAccesses
         .name(name() + ".uncoalesced_accesses")
index 2aff81027a44434d6a563d8e74e94c9fb5f507b7..b65f1b0fb84e0b5fa6141a77636f0b917a869776 100644 (file)
 #include "base/logging.hh"
 #include "base/statistics.hh"
 #include "gpu-compute/gpu_tlb.hh"
-#include "mem/mem_object.hh"
 #include "mem/port.hh"
 #include "mem/request.hh"
 #include "params/TLBCoalescer.hh"
+#include "sim/clocked_object.hh"
 
 class BaseTLB;
 class Packet;
 class ThreadContext;
 
 /**
- * The TLBCoalescer is a MemObject sitting on the front side (CPUSide) of
+ * The TLBCoalescer is a ClockedObject sitting on the front side (CPUSide) of
  * each TLB. It receives packets and issues coalesced requests to the
  * TLB below it. It controls how requests are coalesced (the rules)
  * and the permitted number of TLB probes per cycle (i.e., how many
  * coalesced requests it feeds the TLB per cycle).
  */
-class TLBCoalescer : public MemObject
+class TLBCoalescer : public ClockedObject
 {
    protected:
     // TLB clock: will inherit clock from shader's clock period in terms
index 5bffc30af53865e777d258d97a59a0b62cfbc746..5b4c718c2640f6fe9ea92a428929f8c9dd074d77 100644 (file)
@@ -40,9 +40,9 @@
 #          Andreas Hansson
 
 from m5.params import *
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class AbstractMemory(MemObject):
+class AbstractMemory(ClockedObject):
     type = 'AbstractMemory'
     abstract = True
     cxx_header = "mem/abstract_mem.hh"
index a1ddaeb7a19d8cff00cf0532b985a69a0083ac55..d2136f5044a33ece8bd1da89ae02ab89d26375be 100644 (file)
@@ -36,7 +36,7 @@
 # Authors: Andreas Hansson
 
 from m5.params import *
-from m5.objects.MemObject import MemObject
+from m5.SimObject import SimObject
 
 # An address mapper changes the packet addresses in going from the
 # slave port side of the mapper to the master port side. When the
@@ -44,7 +44,7 @@ from m5.objects.MemObject import MemObject
 # necessary range updates. Note that snoop requests that travel from
 # the master port (i.e. the memory side) to the slave port are
 # currently not modified.
-class AddrMapper(MemObject):
+class AddrMapper(SimObject):
     type = 'AddrMapper'
     cxx_header = 'mem/addr_mapper.hh'
     abstract = True
index 34af552e32894a1cda380568f552d72416c5c5b4..9e86c1a41a186a95b690033fac5ffe0619530671 100644 (file)
@@ -40,9 +40,9 @@
 #          Andreas Hansson
 
 from m5.params import *
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class Bridge(MemObject):
+class Bridge(ClockedObject):
     type = 'Bridge'
     cxx_header = "mem/bridge.hh"
     slave = SlavePort('Slave port')
index fc53ef1f0aeb1622d056fde5e264141c7c11a614..d6324372255946ebf40f66b22702d81f44830c5a 100644 (file)
 
 from m5.params import *
 from m5.proxy import *
-from m5.objects.MemObject import MemObject
 from m5.objects.System import System
+from m5.SimObject import SimObject
 
 # The communication monitor will most typically be used in combination
 # with periodic dumping and resetting of stats using schedStatEvent
-class CommMonitor(MemObject):
+class CommMonitor(SimObject):
     type = 'CommMonitor'
     cxx_header = "mem/comm_monitor.hh"
 
index 883e277270c3195037c174d86db630b1738c2217..5a9a5bf9de14bc74243dd35df3a4fb187731eb89 100644 (file)
@@ -39,9 +39,9 @@
 
 from m5.params import *
 from m5.proxy import *
-from m5.objects.MemObject import MemObject
+from m5.SimObject import SimObject
 
-class ExternalMaster(MemObject):
+class ExternalMaster(SimObject):
     type = 'ExternalMaster'
     cxx_header = "mem/external_master.hh"
 
index 7be5fd8a9d51451535a91302b079f28d2110cfce..c5fd628f7b52353e46515cd2d02eeaf2d628a797 100644 (file)
@@ -36,9 +36,9 @@
 # Authors: Andrew Bardsley
 
 from m5.params import *
-from m5.objects.MemObject import MemObject
+from m5.SimObject import SimObject
 
-class ExternalSlave(MemObject):
+class ExternalSlave(SimObject):
     type = 'ExternalSlave'
     cxx_header = "mem/external_slave.hh"
 
index 7460cd13bbbc552f0e368be6c159be6d6006ef25..4a7adc8fed0f700532692a0b7a58fee1029a871a 100644 (file)
@@ -35,7 +35,6 @@
 #
 # Authors: Marco Elver
 
-from m5.objects.MemObject import MemObject
 from m5.SimObject import SimObject
 from m5.params import *
 from m5.proxy import *
@@ -44,7 +43,7 @@ class MemChecker(SimObject):
     type = 'MemChecker'
     cxx_header = "mem/mem_checker.hh"
 
-class MemCheckerMonitor(MemObject):
+class MemCheckerMonitor(SimObject):
     type = 'MemCheckerMonitor'
     cxx_header = "mem/mem_checker_monitor.hh"
 
index 415cef4ce5f7946b41c77cd51126392694f00e95..2dedf3267c095b616494879b0a6e659bd70bf5d1 100644 (file)
@@ -36,9 +36,9 @@
 # Authors: Andreas Sandberg
 
 from m5.params import *
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class MemDelay(MemObject):
+class MemDelay(ClockedObject):
     type = 'MemDelay'
     cxx_header = 'mem/mem_delay.hh'
     abstract = True
index 02dcd4c7e12fb97ea70831358d0347910fed5865..3331aeea67231a6db2f52b5a5734bb840be28907 100644 (file)
 #          Erfan Azarkhish
 
 from m5.params import *
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
 # SerialLink is a simple variation of the Bridge class, with the ability to
 # account for the latency of packet serialization.
 
-class SerialLink(MemObject):
+class SerialLink(ClockedObject):
     type = 'SerialLink'
     cxx_header = "mem/serial_link.hh"
     slave = SlavePort('Slave port')
index c9f35f3e5ad882f1aa6038d68f688210db342ceb..976a290ebe8fb7a3efc85bf829ce05ba2fa0b23f 100644 (file)
@@ -44,9 +44,9 @@ from m5.params import *
 from m5.proxy import *
 from m5.SimObject import SimObject
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class BaseXBar(MemObject):
+class BaseXBar(ClockedObject):
     type = 'BaseXBar'
     abstract = True
     cxx_header = "mem/xbar.hh"
index 3f2d5071347b55307100236e6f41990b55cfce62..f7b02ce17675dd633525dbdce73159c191455705 100644 (file)
@@ -57,7 +57,7 @@
 using namespace std;
 
 AbstractMemory::AbstractMemory(const Params *p) :
-    MemObject(p), range(params()->range), pmemAddr(NULL),
+    ClockedObject(p), range(params()->range), pmemAddr(NULL),
     backdoor(params()->range, nullptr,
              (MemBackdoor::Flags)(MemBackdoor::Readable |
                                   MemBackdoor::Writeable)),
@@ -91,7 +91,7 @@ AbstractMemory::setBackingStore(uint8_t* pmem_addr)
 void
 AbstractMemory::regStats()
 {
-    MemObject::regStats();
+    ClockedObject::regStats();
 
     using namespace Stats;
 
index cf9ca74396ae14c7d6a3d40f00005c843f6cb8af..18d8ee9098bf03eb31ab64e2bc7b0d39495d4336 100644 (file)
@@ -50,8 +50,9 @@
 #define __MEM_ABSTRACT_MEMORY_HH__
 
 #include "mem/backdoor.hh"
-#include "mem/mem_object.hh"
+#include "mem/port.hh"
 #include "params/AbstractMemory.hh"
+#include "sim/clocked_object.hh"
 #include "sim/stats.hh"
 
 
@@ -98,10 +99,10 @@ class LockedAddr {
  * An abstract memory represents a contiguous block of physical
  * memory, with an associated address range, and also provides basic
  * functionality for reading and writing this memory without any
- * timing information. It is a MemObject since any subclass must have
- * at least one slave port.
+ * timing information. It is a ClockedObject since subclasses may need timing
+ * information.
  */
-class AbstractMemory : public MemObject
+class AbstractMemory : public ClockedObject
 {
   protected:
 
index 958a8ad4cf839ed439686ad17914001456fd362a..246c039eeecf1014c86b5270dad7c7401cbf6e68 100644 (file)
@@ -40,7 +40,7 @@
 #include "mem/addr_mapper.hh"
 
 AddrMapper::AddrMapper(const AddrMapperParams* p)
-    : MemObject(p),
+    : SimObject(p),
       masterPort(name() + "-master", *this),
       slavePort(name() + "-slave", *this)
 {
@@ -61,7 +61,7 @@ AddrMapper::getPort(const std::string &if_name, PortID idx)
     } else if (if_name == "slave") {
         return slavePort;
     } else {
-        return MemObject::getPort(if_name, idx);
+        return SimObject::getPort(if_name, idx);
     }
 }
 
index aaefdedc361cb773392d4569cf81eca55738a7ca..e6229d67a2599733decc8789c52dc2f6e6745e1e 100644 (file)
 #ifndef __MEM_ADDR_MAPPER_HH__
 #define __MEM_ADDR_MAPPER_HH__
 
-#include "mem/mem_object.hh"
+#include "mem/port.hh"
 #include "params/AddrMapper.hh"
 #include "params/RangeAddrMapper.hh"
+#include "sim/sim_object.hh"
 
 /**
  * An address mapper changes the packet addresses in going from the
@@ -53,7 +54,7 @@
  * currently not modified.
  */
 
-class AddrMapper : public MemObject
+class AddrMapper : public SimObject
 {
 
   public:
index 7428e7f779954b2ccf557e64dfaa0fac9b863ed5..9c4241097ea21e33613e4641e3b1c84e00f92669 100644 (file)
@@ -77,7 +77,7 @@ Bridge::BridgeMasterPort::BridgeMasterPort(const std::string& _name,
 }
 
 Bridge::Bridge(Params *p)
-    : MemObject(p),
+    : ClockedObject(p),
       slavePort(p->name + ".slave", *this, masterPort,
                 ticksToCycles(p->delay), p->resp_size, p->ranges),
       masterPort(p->name + ".master", *this, slavePort,
@@ -94,7 +94,7 @@ Bridge::getPort(const std::string &if_name, PortID idx)
         return slavePort;
     else
         // pass it along to our super class
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
 }
 
 void
index b3fb90d93a07d5902b62079e739621918bd359ef..16b21addf4132bb4f98228b72785fc0918f9fe9d 100644 (file)
@@ -54,8 +54,9 @@
 #include <deque>
 
 #include "base/types.hh"
-#include "mem/mem_object.hh"
+#include "mem/port.hh"
 #include "params/Bridge.hh"
+#include "sim/clocked_object.hh"
 
 /**
  * A bridge is used to interface two different crossbars (or in general a
@@ -70,7 +71,7 @@
  * the bridge will delay accepting the packet until space becomes
  * available.
  */
-class Bridge : public MemObject
+class Bridge : public ClockedObject
 {
   protected:
 
index 0a590c2ca5d4a0b9aeeee2b2cc7c2112a6aa5b4e..b2f4784721877968027155f249e3d17886a817d8 100644 (file)
@@ -43,7 +43,7 @@ from m5.params import *
 from m5.proxy import *
 from m5.SimObject import SimObject
 
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 from m5.objects.Prefetcher import BasePrefetcher
 from m5.objects.ReplacementPolicies import *
 from m5.objects.Tags import *
@@ -72,7 +72,7 @@ class WriteAllocator(SimObject):
     block_size = Param.Int(Parent.cache_line_size, "block size in bytes")
 
 
-class BaseCache(MemObject):
+class BaseCache(ClockedObject):
     type = 'BaseCache'
     abstract = True
     cxx_header = "mem/cache/base.hh"
index 554a61eb01579daba8a6d5a2ce671c4921be94c1..f087618c78fca4eee7e9f03858e2cca86a8a845e 100644 (file)
@@ -77,7 +77,7 @@ BaseCache::CacheSlavePort::CacheSlavePort(const std::string &_name,
 }
 
 BaseCache::BaseCache(const BaseCacheParams *p, unsigned blk_size)
-    : MemObject(p),
+    : ClockedObject(p),
       cpuSidePort (p->name + ".cpu_side", this, "CpuSidePort"),
       memSidePort(p->name + ".mem_side", this, "MemSidePort"),
       mshrQueue("MSHRs", p->mshrs, 0, p->demand_mshr_reserve), // see below
@@ -193,7 +193,7 @@ BaseCache::getPort(const std::string &if_name, PortID idx)
     } else if (if_name == "cpu_side") {
         return cpuSidePort;
     }  else {
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
     }
 }
 
@@ -1696,7 +1696,7 @@ BaseCache::unserialize(CheckpointIn &cp)
 void
 BaseCache::regStats()
 {
-    MemObject::regStats();
+    ClockedObject::regStats();
 
     using namespace Stats;
 
index 8d5ed11d08dcfc0b330ca74f91863380e2c4653a..b995a6e474db3a4d55361bedfb60dcbda8d9d015 100644 (file)
 #include "mem/cache/tags/base.hh"
 #include "mem/cache/write_queue.hh"
 #include "mem/cache/write_queue_entry.hh"
-#include "mem/mem_object.hh"
 #include "mem/packet.hh"
 #include "mem/packet_queue.hh"
 #include "mem/qport.hh"
 #include "mem/request.hh"
 #include "params/WriteAllocator.hh"
+#include "sim/clocked_object.hh"
 #include "sim/eventq.hh"
 #include "sim/probe/probe.hh"
 #include "sim/serialize.hh"
@@ -91,7 +91,7 @@ struct BaseCacheParams;
 /**
  * A basic cache interface. Implements some common functions for speed.
  */
-class BaseCache : public MemObject
+class BaseCache : public ClockedObject
 {
   protected:
     /**
index f27027dfd18168db1614abcf83bf5a57137060f3..90268bf3f2839943baba651e8e475742e45346e1 100644 (file)
@@ -49,7 +49,7 @@
 #include "sim/stats.hh"
 
 CommMonitor::CommMonitor(Params* params)
-    : MemObject(params),
+    : SimObject(params),
       masterPort(name() + "-master", *this),
       slavePort(name() + "-slave", *this),
       samplePeriodicEvent([this]{ samplePeriodic(); }, name()),
@@ -91,7 +91,7 @@ CommMonitor::getPort(const std::string &if_name, PortID idx)
     } else if (if_name == "slave") {
         return slavePort;
     } else {
-        return MemObject::getPort(if_name, idx);
+        return SimObject::getPort(if_name, idx);
     }
 }
 
@@ -381,7 +381,7 @@ CommMonitor::recvRangeChange()
 void
 CommMonitor::regStats()
 {
-    MemObject::regStats();
+    SimObject::regStats();
 
     // Initialise all the monitor stats
     using namespace Stats;
index 1eea6a535fc1765939989debe0676b43a973faa1..350155924c6f1d87d623681be8fd19807fbecd7a 100644 (file)
 #define __MEM_COMM_MONITOR_HH__
 
 #include "base/statistics.hh"
-#include "mem/mem_object.hh"
+#include "mem/port.hh"
 #include "params/CommMonitor.hh"
 #include "sim/probe/mem.hh"
+#include "sim/sim_object.hh"
 
 /**
- * The communication monitor is a MemObject which can monitor statistics of
+ * The communication monitor is a SimObject which can monitor statistics of
  * the communication happening between two ports in the memory system.
  *
  * Currently the following stats are implemented: Histograms of read/write
@@ -61,7 +62,7 @@
  * to capture the number of accesses to an address over time ("heat map").
  * All stats can be disabled from Python.
  */
-class CommMonitor : public MemObject
+class CommMonitor : public SimObject
 {
 
   public: // Construction & SimObject interfaces
@@ -83,7 +84,7 @@ class CommMonitor : public MemObject
     void startup() override;
     void regProbePoints() override;
 
-  public: // MemObject interfaces
+  public: // SimObject interfaces
     Port &getPort(const std::string &if_name,
                   PortID idx=InvalidPortID) override;
 
index 429e9ef5e9952bb527a23a04dca03ca79c7e342f..08465aa70b4a908929e0243aab22f0e93d7dc080 100644 (file)
@@ -2849,7 +2849,7 @@ Port &
 DRAMCtrl::getPort(const string &if_name, PortID idx)
 {
     if (if_name != "port") {
-        return MemObject::getPort(if_name, idx);
+        return QoS::MemCtrl::getPort(if_name, idx);
     } else {
         return port;
     }
index f0c61212065883c3298badf9f8fa7c217cc955ca..3f20bb3ec0937adccaeeafe3cc7a45c93da9fd70 100644 (file)
@@ -340,7 +340,7 @@ Port &
 DRAMSim2::getPort(const std::string &if_name, PortID idx)
 {
     if (if_name != "port") {
-        return MemObject::getPort(if_name, idx);
+        return AbstractMemory::getPort(if_name, idx);
     } else {
         return port;
     }
index 799f850366feb4a5bdf2b6fb131588e7ad8d62cc..d530d9ad02b12774f04e2dccc7954861d7b265c3 100644 (file)
@@ -52,7 +52,7 @@ std::map<std::string, ExternalMaster::Handler *>
     ExternalMaster::portHandlers;
 
 ExternalMaster::ExternalMaster(ExternalMasterParams *params) :
-    MemObject(params),
+    SimObject(params),
     externalPort(NULL),
     portName(params->name + ".port"),
     portType(params->port_type),
@@ -83,7 +83,7 @@ ExternalMaster::getPort(const std::string &if_name, PortID idx)
         }
         return *externalPort;
     } else {
-        return MemObject::getPort(if_name, idx);
+        return SimObject::getPort(if_name, idx);
     }
 }
 
index f105054b417dcf32a672b69d50be471cc068b320..debc862697a807cfc3927fccba721add6a16d43f 100644 (file)
 #ifndef __MEM_EXTERNAL_MASTER_HH__
 #define __MEM_EXTERNAL_MASTER_HH__
 
-#include "mem/mem_object.hh"
+#include "mem/port.hh"
 #include "params/ExternalMaster.hh"
+#include "sim/sim_object.hh"
 
-class ExternalMaster : public MemObject
+class ExternalMaster : public SimObject
 {
   public:
     /** Derive from this class to create an external port interface */
index 6266f6649a7336b11059bec834b0bc91397adc05..ae81e1b15e26e1fe93cff0a4a468f203f95f0c05 100644 (file)
@@ -181,7 +181,7 @@ ExternalSlave::ExternalPort::getAddrRanges() const
 }
 
 ExternalSlave::ExternalSlave(ExternalSlaveParams *params) :
-    MemObject(params),
+    SimObject(params),
     externalPort(NULL),
     portName(params->name + ".port"),
     portType(params->port_type),
@@ -216,7 +216,7 @@ ExternalSlave::getPort(const std::string &if_name, PortID idx)
         }
         return *externalPort;
     } else {
-        return MemObject::getPort(if_name, idx);
+        return SimObject::getPort(if_name, idx);
     }
 }
 
index cfe89b98a27a65519de8d33900920819fcdccd91..ab33fc53b05d1831c3461dabaff14c298f867eb4 100644 (file)
 #ifndef __MEM_EXTERNAL_SLAVE_HH__
 #define __MEM_EXTERNAL_SLAVE_HH__
 
-#include "mem/mem_object.hh"
+#include "mem/port.hh"
 #include "params/ExternalSlave.hh"
+#include "sim/sim_object.hh"
 
-class ExternalSlave : public MemObject
+class ExternalSlave : public SimObject
 {
   public:
     /** Derive from this class to create an external port interface */
index 8364b919824a3c89da854d3a5ebd220cecab9195..6879f951b70ebd597bc09c819f9da76c21c85731 100644 (file)
@@ -49,7 +49,7 @@
 #include "debug/MemCheckerMonitor.hh"
 
 MemCheckerMonitor::MemCheckerMonitor(Params* params)
-    : MemObject(params),
+    : SimObject(params),
       masterPort(name() + "-master", *this),
       slavePort(name() + "-slave", *this),
       warnOnly(params->warn_only),
@@ -81,7 +81,7 @@ MemCheckerMonitor::getPort(const std::string &if_name, PortID idx)
     } else if (if_name == "slave" || if_name == "cpu_side") {
         return slavePort;
     } else {
-        return MemObject::getPort(if_name, idx);
+        return SimObject::getPort(if_name, idx);
     }
 }
 
index ba150493f0ed71212f2dfd1ddc4158444e8a931f..09465a23635148d747ad57a6061b2128b9ddae12 100644 (file)
 
 #include "base/statistics.hh"
 #include "mem/mem_checker.hh"
-#include "mem/mem_object.hh"
 #include "params/MemCheckerMonitor.hh"
+#include "sim/sim_object.hh"
 #include "sim/system.hh"
 
 /**
  * Implements a MemChecker monitor, to be inserted between two ports.
  */
-class MemCheckerMonitor : public MemObject
+class MemCheckerMonitor : public SimObject
 {
   public:
 
index 67a9664f87cfbf6d82ac7fdb0c87c4ef10314d14..f1a0f21515758f313aa3ab7ba17d2d65fb7194ab 100644 (file)
@@ -43,7 +43,7 @@
 #include "params/SimpleMemDelay.hh"
 
 MemDelay::MemDelay(const MemDelayParams *p)
-    : MemObject(p),
+    : ClockedObject(p),
       masterPort(name() + "-master", *this),
       slavePort(name() + "-slave", *this),
       reqQueue(*this, masterPort),
@@ -68,7 +68,7 @@ MemDelay::getPort(const std::string &if_name, PortID idx)
     } else if (if_name == "slave") {
         return slavePort;
     } else {
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
     }
 }
 
index 789d965c823ee1b42b9f67aa4ca91747dbc17819..894ddc02d31e489fdc93e26d643ec2437045fdd1 100644 (file)
@@ -40,8 +40,8 @@
 #ifndef __MEM_MEM_DELAY_HH__
 #define __MEM_MEM_DELAY_HH__
 
-#include "mem/mem_object.hh"
 #include "mem/qport.hh"
+#include "sim/clocked_object.hh"
 
 struct MemDelayParams;
 struct SimpleMemDelayParams;
@@ -61,7 +61,7 @@ struct SimpleMemDelayParams;
  *
  * NOTE: Packets may be reordered if the delays aren't constant.
  */
-class MemDelay : public MemObject
+class MemDelay : public ClockedObject
 {
 
   public:
index 72d0b096294b5f0b1b98bc5d66a757a2789215b6..6655b114350a1666042d3cf7deccfa923e0aa960 100644 (file)
@@ -43,8 +43,8 @@
 #ifndef __MEM_MPORT_HH__
 #define __MEM_MPORT_HH__
 
-#include "mem/mem_object.hh"
 #include "mem/tport.hh"
+#include "sim/sim_object.hh"
 
 /*
  * This file defines a port class which is used for sending and receiving
@@ -57,7 +57,7 @@ class MessageSlavePort : public SimpleTimingPort
 {
 
   public:
-    MessageSlavePort(const std::string &name, MemObject *owner) :
+    MessageSlavePort(const std::string &name, SimObject *owner) :
         SimpleTimingPort(name, owner)
     {}
 
@@ -75,7 +75,7 @@ class MessageMasterPort : public QueuedMasterPort
 {
   public:
 
-    MessageMasterPort(const std::string &name, MemObject *owner) :
+    MessageMasterPort(const std::string &name, SimObject *owner) :
         QueuedMasterPort(name, owner, reqQueue, snoopRespQueue),
         reqQueue(*owner, *this), snoopRespQueue(*owner, *this)
     {}
index f942e8ddd3853b6bcc42ae75c693d70eb1c7c936..93b3ad5deb08347c2b03c0b6acc7182af8a06fbf 100644 (file)
@@ -387,16 +387,16 @@ class Packet : public Printable
 
     /**
      * A virtual base opaque structure used to hold state associated
-     * with the packet (e.g., an MSHR), specific to a MemObject that
+     * with the packet (e.g., an MSHR), specific to a SimObject that
      * sees the packet. A pointer to this state is returned in the
-     * packet's response so that the MemObject in question can quickly
+     * packet's response so that the SimObject in question can quickly
      * look up the state needed to process it. A specific subclass
      * would be derived from this to carry state specific to a
      * particular sending device.
      *
-     * As multiple MemObjects may add their SenderState throughout the
+     * As multiple SimObjects may add their SenderState throughout the
      * memory system, the SenderStates create a stack, where a
-     * MemObject can add a new Senderstate, as long as the
+     * SimObject can add a new Senderstate, as long as the
      * predecessing SenderState is restored when the response comes
      * back. For this reason, the predecessor should always be
      * populated with the current SenderState of a packet before
index 933e98243947d0798d12ae58516979670314d40a..ee312eac7ea107876f107a6348c93950a2af52ca 100644 (file)
@@ -49,7 +49,7 @@
 #include "mem/port.hh"
 
 #include "base/trace.hh"
-#include "mem/mem_object.hh"
+#include "sim/sim_object.hh"
 
 BaseMasterPort::BaseMasterPort(const std::string &name, PortID _id)
     : Port(name, _id), _baseSlavePort(NULL)
@@ -92,7 +92,7 @@ BaseSlavePort::getMasterPort() const
 /**
  * Master port
  */
-MasterPort::MasterPort(const std::string& name, MemObject* _owner, PortID _id)
+MasterPort::MasterPort(const std::string& name, SimObject* _owner, PortID _id)
     : BaseMasterPort(name, _id), _slavePort(NULL), owner(*_owner)
 {
 }
@@ -201,7 +201,7 @@ MasterPort::printAddr(Addr a)
 /**
  * Slave port
  */
-SlavePort::SlavePort(const std::string& name, MemObject* _owner, PortID id)
+SlavePort::SlavePort(const std::string& name, SimObject* _owner, PortID id)
     : BaseSlavePort(name, id), _masterPort(NULL), defaultBackdoorWarned(false),
     owner(*_owner)
 {
index 72a02711c5f2836a44815d801273f9d40e535086..76ad3bd6391af915fe00b70efbce7a52df042c4c 100644 (file)
@@ -55,7 +55,7 @@
 #include "mem/packet.hh"
 #include "sim/port.hh"
 
-class MemObject;
+class SimObject;
 
 /** Forward declaration */
 class BaseSlavePort;
@@ -123,11 +123,11 @@ class MasterPort : public BaseMasterPort
 
   protected:
 
-    MemObject& owner;
+    SimObject& owner;
 
   public:
 
-    MasterPort(const std::string& name, MemObject* _owner,
+    MasterPort(const std::string& name, SimObject* _owner,
                PortID id=InvalidPortID);
     virtual ~MasterPort();
 
@@ -317,11 +317,11 @@ class SlavePort : public BaseSlavePort
 
   protected:
 
-    MemObject& owner;
+    SimObject& owner;
 
   public:
 
-    SlavePort(const std::string& name, MemObject* _owner,
+    SlavePort(const std::string& name, SimObject* _owner,
               PortID id=InvalidPortID);
     virtual ~SlavePort();
 
index 3ff2339d5009e22991ff0600228cb4e9c60c1681..1f104e432bedef349874a99dd3a9b124a41ca41f 100644 (file)
@@ -110,7 +110,7 @@ Port &
 MemSinkCtrl::getPort(const std::string &interface, PortID idx)
 {
     if (interface != "port") {
-        return MemObject::getPort(interface, idx);
+        return MemCtrl::getPort(interface, idx);
     } else {
         return port;
     }
index 77d8dfafa18b0e60a097e9118616af7c9d5909be..6d9655f41ff6b873e0f31e507627b7c0649d2a44 100644 (file)
@@ -47,6 +47,7 @@
 
 #include "mem/packet_queue.hh"
 #include "mem/port.hh"
+#include "sim/sim_object.hh"
 
 /**
  * A queued port is a port that has an infinite queue for outgoing
@@ -75,7 +76,7 @@ class QueuedSlavePort : public SlavePort
      * behaviuor in a subclass, and provide the latter to the
      * QueuePort constructor.
      */
-    QueuedSlavePort(const std::string& name, MemObject* owner,
+    QueuedSlavePort(const std::string& name, SimObject* owner,
                     RespPacketQueue &resp_queue, PortID id = InvalidPortID) :
         SlavePort(name, owner, id), respQueue(resp_queue)
     { }
@@ -128,7 +129,7 @@ class QueuedMasterPort : public MasterPort
      * behaviuor in a subclass, and provide the latter to the
      * QueuePort constructor.
      */
-    QueuedMasterPort(const std::string& name, MemObject* owner,
+    QueuedMasterPort(const std::string& name, SimObject* owner,
                      ReqPacketQueue &req_queue,
                      SnoopRespPacketQueue &snoop_resp_queue,
                      PortID id = InvalidPortID) :
index ca1ef41552554e9e9e3654f2c73a658c01449309..2d675aa600f621ea8de7fc02bd9b64b2c90304d3 100644 (file)
@@ -43,7 +43,7 @@ class RubyDummyPort : public Port
         // No need to connect anything here currently. MessageBuffer
         // port connections only serve to print the connections in
         // the config output.
-        // TODO: Add real ports to MessageBuffers and use MemObject connect
+        // TODO: Add real ports to MessageBuffers and use SimObject connect
         // code below to bind MessageBuffer senders and receivers
     }
     void unbind() override {}
index fa1c936b7052a21a7b7a1bfe17c2f201a2368a67..68edcba595b56cb69495de01e405f61d70246362 100644 (file)
@@ -49,7 +49,7 @@
 #include "sim/system.hh"
 
 AbstractController::AbstractController(const Params *p)
-    : MemObject(p), Consumer(this), m_version(p->version),
+    : ClockedObject(p), Consumer(this), m_version(p->version),
       m_clusterID(p->cluster_id),
       m_masterId(p->system->getMasterId(this)), m_is_blocking(false),
       m_number_of_TBEs(p->number_of_TBEs),
@@ -90,7 +90,7 @@ AbstractController::resetStats()
 void
 AbstractController::regStats()
 {
-    MemObject::regStats();
+    ClockedObject::regStats();
 
     m_fully_busy_cycles
         .name(name() + ".fully_busy_cycles")
index 5e39a28d2344827794fb80394420c7f5332ef8ee..4d065469802e6dc83d5747f952b7e1b4ad305417 100644 (file)
@@ -47,7 +47,6 @@
 
 #include "base/addr_range.hh"
 #include "base/callback.hh"
-#include "mem/mem_object.hh"
 #include "mem/packet.hh"
 #include "mem/protocol/AccessPermission.hh"
 #include "mem/qport.hh"
@@ -59,6 +58,7 @@
 #include "mem/ruby/network/MessageBuffer.hh"
 #include "mem/ruby/system/CacheRecorder.hh"
 #include "params/RubyController.hh"
+#include "sim/clocked_object.hh"
 
 class Network;
 class GPUCoalescer;
@@ -70,7 +70,7 @@ class RejectException: public std::exception
     { return "Port rejected message based on type"; }
 };
 
-class AbstractController : public MemObject, public Consumer
+class AbstractController : public ClockedObject, public Consumer
 {
   public:
     typedef RubyControllerParams Params;
index 0eb704916068027cd0703002c3372ce3537889b8..4d3c1900e1a9304a90a36a082670bc0bf3249034 100644 (file)
@@ -41,9 +41,9 @@
 
 from m5.params import *
 from m5.proxy import *
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class RubyController(MemObject):
+class RubyController(ClockedObject):
     type = 'RubyController'
     cxx_class = 'AbstractController'
     cxx_header = "mem/ruby/slicc_interface/AbstractController.hh"
index 795b473c767ddb336d44546fb59eded34c82ec76..ff3bbe8f0eff61541dee6c45209e9d39bbb74de1 100644 (file)
@@ -52,7 +52,7 @@
 #include "sim/system.hh"
 
 RubyPort::RubyPort(const Params *p)
-    : MemObject(p), m_ruby_system(p->ruby_system), m_version(p->version),
+    : ClockedObject(p), m_ruby_system(p->ruby_system), m_version(p->version),
       m_controller(NULL), m_mandatory_q_ptr(NULL),
       m_usingRubyTester(p->using_ruby_tester), system(p->system),
       pioMasterPort(csprintf("%s.pio-master-port", name()), this),
@@ -117,7 +117,7 @@ RubyPort::getPort(const std::string &if_name, PortID idx)
     }
 
     // pass it along to our super class
-    return MemObject::getPort(if_name, idx);
+    return ClockedObject::getPort(if_name, idx);
 }
 
 RubyPort::PioMasterPort::PioMasterPort(const std::string &_name,
index 922b3a9738afda2d4a4677db4414bf542bb255bf..20bc03a0776ada22b32095a89b4fa0b60bd0edd4 100644 (file)
 #include "mem/ruby/common/MachineID.hh"
 #include "mem/ruby/network/MessageBuffer.hh"
 #include "mem/ruby/system/RubySystem.hh"
-#include "mem/mem_object.hh"
 #include "mem/tport.hh"
 #include "params/RubyPort.hh"
+#include "sim/clocked_object.hh"
 
 class AbstractController;
 
-class RubyPort : public MemObject
+class RubyPort : public ClockedObject
 {
   public:
     class MemMasterPort : public QueuedMasterPort
index 35460438cbb7788f1fbc3d9ff190367f22324cf3..2aede349d2c42b7a61e42c60f491e4abb53b0385 100644 (file)
@@ -29,9 +29,9 @@
 
 from m5.params import *
 from m5.proxy import *
-from m5.objects.MemObject import MemObject
+from m5.objects.ClockedObject import ClockedObject
 
-class RubyPort(MemObject):
+class RubyPort(ClockedObject):
    type = 'RubyPort'
    abstract = True
    cxx_header = "mem/ruby/system/RubyPort.hh"
index 77ee60554c3d18ca122007a466dc42d3d4840962..fa50c95dcf4c4e0b76aa8d5ad32b9710e23960e0 100644 (file)
@@ -33,7 +33,6 @@
 
 from m5.params import *
 from m5.proxy import *
-from m5.objects.MemObject import MemObject
 from m5.objects.ReplacementPolicy import ReplacementPolicy
 
 class WeightedLRUReplacementPolicy(ReplacementPolicy):
index 438fb0e686f220148c2312a232109add667b40a5..b39ac5946910d44c8f2afea23622a23b4f494788 100644 (file)
@@ -82,7 +82,7 @@ SerialLink::SerialLinkMasterPort::SerialLinkMasterPort(const std::string&
 }
 
 SerialLink::SerialLink(SerialLinkParams *p)
-    : MemObject(p),
+    : ClockedObject(p),
       slavePort(p->name + ".slave", *this, masterPort,
                 ticksToCycles(p->delay), p->resp_size, p->ranges),
       masterPort(p->name + ".master", *this, slavePort,
@@ -102,7 +102,7 @@ SerialLink::getPort(const std::string &if_name, PortID idx)
         return slavePort;
     else
         // pass it along to our super class
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
 }
 
 void
index 0bb1692ed76cf389dc41f622242f1c9a520ae0cc..3dac180451fbaf7087c66f53d2d195ca23849f91 100644 (file)
@@ -56,8 +56,9 @@
 #include <deque>
 
 #include "base/types.hh"
-#include "mem/mem_object.hh"
+#include "mem/port.hh"
 #include "params/SerialLink.hh"
+#include "sim/clocked_object.hh"
 
 /**
  * SerialLink is a simple variation of the Bridge class, with the ability to
@@ -66,7 +67,7 @@
  * whole packet to start the serialization. But the deserializer waits for the
  * complete packet to check its integrity first.
   */
-class SerialLink : public MemObject
+class SerialLink : public ClockedObject
 {
   protected:
 
index fcc1cff2380af04afc04f14c77c8f0fff518091e..9e7dfc815bf1821f3fa9788ab247cc442c185030 100644 (file)
@@ -245,7 +245,7 @@ Port &
 SimpleMemory::getPort(const std::string &if_name, PortID idx)
 {
     if (if_name != "port") {
-        return MemObject::getPort(if_name, idx);
+        return AbstractMemory::getPort(if_name, idx);
     } else {
         return port;
     }
index 9f0f08814b92ed4961985743a2d56117cbfd5d06..4de495e22f6d376ea65b547437ebc95384d70a0a 100644 (file)
  */
 
 #include "mem/tport.hh"
-
-#include "mem/mem_object.hh"
+#include "sim/sim_object.hh"
 
 SimpleTimingPort::SimpleTimingPort(const std::string& _name,
-                                   MemObject* _owner) :
+                                   SimObject* _owner) :
     QueuedSlavePort(_name, _owner, queueImpl), queueImpl(*_owner, *this)
 {
 }
index d7e4bbc74a00310cae81717cbd4b09885177a405..d62b1405d4ab26d4b19cc94179d935a9c71138cc 100644 (file)
@@ -52,6 +52,8 @@
 
 #include "mem/qport.hh"
 
+class SimObject;
+
 /**
  * The simple timing port uses a queued port to implement
  * recvFunctional and recvTimingReq through recvAtomic. It is always a
@@ -99,7 +101,7 @@ class SimpleTimingPort : public QueuedSlavePort
      * @param name port name
      * @param owner structural owner
      */
-    SimpleTimingPort(const std::string& name, MemObject* owner);
+    SimpleTimingPort(const std::string& name, SimObject* owner);
 
     virtual ~SimpleTimingPort() { }
 
index 9328c29907583a4d6c3046736dbc166a6e4c7815..de32c0b32b7ceeac683475c41ec1145496c411a1 100644 (file)
@@ -56,7 +56,7 @@
 #include "debug/XBar.hh"
 
 BaseXBar::BaseXBar(const BaseXBarParams *p)
-    : MemObject(p),
+    : ClockedObject(p),
       frontendLatency(p->frontend_latency),
       forwardLatency(p->forward_latency),
       responseLatency(p->response_latency),
@@ -88,7 +88,7 @@ BaseXBar::getPort(const std::string &if_name, PortID idx)
         // the slave port index translates directly to the vector position
         return *slavePorts[idx];
     } else {
-        return MemObject::getPort(if_name, idx);
+        return ClockedObject::getPort(if_name, idx);
     }
 }
 
index b688f309a60f00de11d2bcc7750f5b3f1e7aaf27..8de7af46f7690d82f1e313e516e57e59dae1e6b7 100644 (file)
@@ -56,9 +56,9 @@
 
 #include "base/addr_range_map.hh"
 #include "base/types.hh"
-#include "mem/mem_object.hh"
 #include "mem/qport.hh"
 #include "params/BaseXBar.hh"
+#include "sim/clocked_object.hh"
 #include "sim/stats.hh"
 
 /**
@@ -70,7 +70,7 @@
  * The BaseXBar is responsible for the basic flow control (busy or
  * not), the administration of retries, and the address decoding.
  */
-class BaseXBar : public MemObject
+class BaseXBar : public ClockedObject
 {
 
   protected:
index 0e29980c67a319e2697b6184bd59fc4737e39358..dca7d4095d34e008707f969dcd07aca4f767fe8b 100644 (file)
@@ -172,10 +172,6 @@ def createCxxConfigDirectoryEntryFile(code, name, simobj, is_header):
         code('#include "base/str.hh"')
         code('#include "cxx_config/${name}.hh"')
 
-        if simobj._ports:
-            code('#include "mem/mem_object.hh"')
-            code('#include "mem/port.hh"')
-
         code()
         code('${member_prefix}DirectoryEntry::DirectoryEntry()');
         code('{')
index c012cb256bfc6bf6141dd4aeddd3809a9e25777e..9928887b92e96fc5668b020340dfb443c8cf3aad 100644 (file)
@@ -51,7 +51,7 @@ from m5.objects.SimpleMemory import *
 class MemoryMode(Enum): vals = ['invalid', 'atomic', 'timing',
                                 'atomic_noncaching']
 
-class System(MemObject):
+class System(SimObject):
     type = 'System'
     cxx_header = "sim/system.hh"
     system_port = MasterPort("System port")
index 35d008d58b80a5e3e2aea86d0954945e2aac21f7..2ea3eaf0cebe9ace00ef8c012171937947ea0ca5 100644 (file)
@@ -45,8 +45,8 @@
 #include "base/str.hh"
 #include "base/trace.hh"
 #include "debug/CxxConfig.hh"
-#include "mem/mem_object.hh"
 #include "sim/serialize.hh"
+#include "sim/sim_object.hh"
 
 CxxConfigManager::CxxConfigManager(CxxConfigFileBase &configFile_) :
     configFile(configFile_), flags(configFile_.getFlags()),
@@ -451,29 +451,14 @@ CxxConfigManager::bindPort(
     SimObject *slave_object, const std::string &slave_port_name,
     PortID slave_port_index)
 {
-    MemObject *master_mem_object = dynamic_cast<MemObject *>(master_object);
-    MemObject *slave_mem_object = dynamic_cast<MemObject *>(slave_object);
-
-    if (!master_mem_object) {
-        throw Exception(master_object->name(), csprintf(
-            "Object isn't a mem object and so can have master port:"
-            " %s[%d]", master_port_name, master_port_index));
-    }
-
-    if (!slave_mem_object) {
-        throw Exception(slave_object->name(), csprintf(
-            "Object isn't a mem object and so can have slave port:"
-            " %s[%d]", slave_port_name, slave_port_index));
-    }
-
     /* FIXME, check slave_port_index against connection_count
      *  defined for port, need getPortConnectionCount and a
      *  getCxxConfigDirectoryEntry for each object. */
 
     /* It would be nice to be able to catch the errors from these calls. */
-    Port &master_port = master_mem_object->getPort(
+    Port &master_port = master_object->getPort(
         master_port_name, master_port_index);
-    Port &slave_port = slave_mem_object->getPort(
+    Port &slave_port = slave_object->getPort(
         slave_port_name, slave_port_index);
 
     if (master_port.isConnected()) {
index 65ad6cdb0a331d86234f692a1f3d19ec89c71d43..74769654b1dac9bbd676155804e7268f73fa2387 100644 (file)
@@ -89,7 +89,7 @@ vector<System *> System::systemList;
 int System::numSystemsRunning = 0;
 
 System::System(Params *p)
-    : MemObject(p), _systemPort("system_port", this),
+    : SimObject(p), _systemPort("system_port", this),
       multiThread(p->multi_thread),
       pagePtr(0),
       init_param(p->init_param),
@@ -444,7 +444,7 @@ System::unserialize(CheckpointIn &cp)
 void
 System::regStats()
 {
-    MemObject::regStats();
+    SimObject::regStats();
 
     for (uint32_t j = 0; j < numWorkIds ; j++) {
         workItemStats[j] = new Stats::Histogram();
index 6227ae6608ea3e2473b184761d9e850110148d5b..d7a3b20085a29c0c26dfb0dbd29652dd553d05c8 100644 (file)
@@ -58,7 +58,6 @@
 #include "config/the_isa.hh"
 #include "enums/MemoryMode.hh"
 #include "mem/mem_master.hh"
-#include "mem/mem_object.hh"
 #include "mem/physical.hh"
 #include "mem/port.hh"
 #include "mem/port_proxy.hh"
@@ -66,6 +65,7 @@
 #include "sim/futex_map.hh"
 #include "sim/redirect_path.hh"
 #include "sim/se_signal.hh"
+#include "sim/sim_object.hh"
 
 /**
  * To avoid linking errors with LTO, only include the header if we
@@ -81,7 +81,7 @@ class KvmVM;
 class ObjectFile;
 class ThreadContext;
 
-class System : public MemObject
+class System : public SimObject
 {
   private:
 
@@ -97,7 +97,7 @@ class System : public MemObject
         /**
          * Create a system port with a name and an owner.
          */
-        SystemPort(const std::string &_name, MemObject *_owner)
+        SystemPort(const std::string &_name, SimObject *_owner)
             : MasterPort(_name, _owner)
         { }
         bool recvTimingResp(PacketPtr pkt) override