diff options
author | Nilay Vaish <nilay@cs.wisc.edu> | 2014-11-06 05:42:20 -0600 |
---|---|---|
committer | Nilay Vaish <nilay@cs.wisc.edu> | 2014-11-06 05:42:20 -0600 |
commit | d25b722e4a9500f2d4b2ca937900bf093242ddfa (patch) | |
tree | 8eaa415786c9f2ac2ffff67799068381fdbaf90f /src/mem/ruby/structures/RubyMemoryControl.hh | |
parent | 0baaed60ab961b8eb3399ee2c34adeea7335f5b3 (diff) | |
download | gem5-d25b722e4a9500f2d4b2ca937900bf093242ddfa.tar.xz |
ruby: coherence protocols: remove data block from dirctory entry
This patch removes the data block present in the directory entry structure
of each protocol in gem5's mainline. Firstly, this is required for moving
towards common set of memory controllers for classic and ruby memory systems.
Secondly, the data block was being misused in several places. It was being
used for having free access to the physical memory instead of calling on the
memory controller.
From now on, the directory controller will not have a direct visibility into
the physical memory. The Memory Vector object now resides in the
Memory Controller class. This also means that some significant changes are
being made to the functional accesses in ruby.
Diffstat (limited to 'src/mem/ruby/structures/RubyMemoryControl.hh')
-rw-r--r-- | src/mem/ruby/structures/RubyMemoryControl.hh | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/mem/ruby/structures/RubyMemoryControl.hh b/src/mem/ruby/structures/RubyMemoryControl.hh index e7f1c54cc..dde6143c4 100644 --- a/src/mem/ruby/structures/RubyMemoryControl.hh +++ b/src/mem/ruby/structures/RubyMemoryControl.hh @@ -36,15 +36,12 @@ #include "mem/protocol/MemoryMsg.hh" #include "mem/ruby/common/Address.hh" -#include "mem/ruby/common/Consumer.hh" #include "mem/ruby/common/Global.hh" #include "mem/ruby/profiler/MemCntrlProfiler.hh" -#include "mem/ruby/slicc_interface/Message.hh" #include "mem/ruby/structures/MemoryControl.hh" -#include "mem/ruby/structures/MemoryNode.hh" +#include "mem/ruby/structures/MemoryVector.hh" #include "mem/ruby/system/System.hh" #include "params/RubyMemoryControl.hh" -#include "sim/sim_object.hh" // This constant is part of the definition of tFAW; see // the comments in header to RubyMemoryControl.cc @@ -95,8 +92,8 @@ class RubyMemoryControl : public MemoryControl int getRanksPerDimm() { return m_ranks_per_dimm; }; int getDimmsPerChannel() { return m_dimms_per_channel; } - bool functionalReadBuffers(Packet *pkt); - uint32_t functionalWriteBuffers(Packet *pkt); + bool functionalRead(Packet *pkt); + uint32_t functionalWrite(Packet *pkt); private: void enqueueToDirectory(MemoryNode *req, Cycles latency); @@ -165,6 +162,9 @@ class RubyMemoryControl : public MemoryControl int m_idleCount; // watchdog timer for shutting down MemCntrlProfiler* m_profiler_ptr; + + // Actual physical memory. + MemoryVector* m_ram; }; std::ostream& operator<<(std::ostream& out, const RubyMemoryControl& obj); |