gem5 v24.0.0.0
|
Wrapper class to avoid having DRAMsim3 names like ClockDomain etc clashing with the normal gem5 world. More...
#include <dramsim3_wrapper.hh>
Public Member Functions | |
DRAMsim3Wrapper (const std::string &config_file, const std::string &working_dir, std::function< void(uint64_t)> read_cb, std::function< void(uint64_t)> write_cb) | |
Create an instance of the DRAMsim3 multi-channel memory controller using a specific config and system description. | |
~DRAMsim3Wrapper () | |
void | printStats () |
Print the stats gathered in DRAMsim3. | |
void | resetStats () |
Reset stats (useful for fastforwarding switch) | |
void | setCallbacks (std::function< void(uint64_t)> read_complete, std::function< void(uint64_t)> write_complete) |
Set the callbacks to use for read and write completion. | |
bool | canAccept (uint64_t addr, bool is_write) const |
Determine if the controller can accept a new packet or not. | |
void | enqueue (uint64_t addr, bool is_write) |
Enqueue a packet. | |
double | clockPeriod () const |
Get the internal clock period used by DRAMsim3, specified in ns. | |
unsigned int | queueSize () const |
Get the transaction queue size used by DRAMsim3. | |
unsigned int | burstSize () const |
Get the burst size in bytes used by DRAMsim3. | |
void | tick () |
Progress the memory controller one cycle. | |
Private Member Functions | |
template<typename T > | |
T | extractConfig (const std::string &field_name, const std::string &file_name) const |
Private Attributes | |
dramsim3::MemorySystem * | dramsim |
double | _clockPeriod |
unsigned int | _queueSize |
unsigned int | _burstSize |
Wrapper class to avoid having DRAMsim3 names like ClockDomain etc clashing with the normal gem5 world.
Many of the DRAMsim3 headers do not make use of namespaces, and quite a few also open up std. The only thing that needs to be exposed externally are the callbacks. This wrapper effectively avoids clashes by not including any of the conventional gem5 headers (e.g. Packet or SimObject).
Definition at line 73 of file dramsim3_wrapper.hh.
gem5::memory::DRAMsim3Wrapper::DRAMsim3Wrapper | ( | const std::string & | config_file, |
const std::string & | working_dir, | ||
std::function< void(uint64_t)> | read_cb, | ||
std::function< void(uint64_t)> | write_cb ) |
Create an instance of the DRAMsim3 multi-channel memory controller using a specific config and system description.
config_file | Memory config file |
working_dir | Path pre-pended to config files |
Definition at line 55 of file dramsim3_wrapper.cc.
References _burstSize, _clockPeriod, _queueSize, dramsim, and fatal.
gem5::memory::DRAMsim3Wrapper::~DRAMsim3Wrapper | ( | ) |
Definition at line 89 of file dramsim3_wrapper.cc.
References dramsim.
unsigned int gem5::memory::DRAMsim3Wrapper::burstSize | ( | ) | const |
Get the burst size in bytes used by DRAMsim3.
Definition at line 140 of file dramsim3_wrapper.cc.
References _burstSize.
Referenced by gem5::memory::DRAMsim3::init().
bool gem5::memory::DRAMsim3Wrapper::canAccept | ( | uint64_t | addr, |
bool | is_write ) const |
Determine if the controller can accept a new packet or not.
Definition at line 115 of file dramsim3_wrapper.cc.
References gem5::X86ISA::addr, and dramsim.
Referenced by gem5::memory::DRAMsim3::recvTimingReq().
double gem5::memory::DRAMsim3Wrapper::clockPeriod | ( | ) | const |
Get the internal clock period used by DRAMsim3, specified in ns.
Definition at line 128 of file dramsim3_wrapper.cc.
References _clockPeriod.
Referenced by gem5::memory::DRAMsim3::tick().
void gem5::memory::DRAMsim3Wrapper::enqueue | ( | uint64_t | addr, |
bool | is_write ) |
Enqueue a packet.
This assumes that canAccept has returned true.
Definition at line 121 of file dramsim3_wrapper.cc.
References gem5::X86ISA::addr, and dramsim.
Referenced by gem5::memory::DRAMsim3::recvTimingReq().
|
private |
void gem5::memory::DRAMsim3Wrapper::printStats | ( | ) |
Print the stats gathered in DRAMsim3.
Definition at line 96 of file dramsim3_wrapper.cc.
References dramsim.
unsigned int gem5::memory::DRAMsim3Wrapper::queueSize | ( | ) | const |
Get the transaction queue size used by DRAMsim3.
Definition at line 134 of file dramsim3_wrapper.cc.
References _queueSize.
Referenced by gem5::memory::DRAMsim3::recvTimingReq(), and gem5::memory::DRAMsim3::tick().
void gem5::memory::DRAMsim3Wrapper::resetStats | ( | ) |
Reset stats (useful for fastforwarding switch)
Definition at line 102 of file dramsim3_wrapper.cc.
References dramsim.
Referenced by gem5::memory::DRAMsim3::resetStats().
void gem5::memory::DRAMsim3Wrapper::setCallbacks | ( | std::function< void(uint64_t)> | read_complete, |
std::function< void(uint64_t)> | write_complete ) |
Set the callbacks to use for read and write completion.
read_callback | Callback used for read completions |
write_callback | Callback used for write completions |
Definition at line 108 of file dramsim3_wrapper.cc.
References dramsim.
void gem5::memory::DRAMsim3Wrapper::tick | ( | ) |
Progress the memory controller one cycle.
Definition at line 146 of file dramsim3_wrapper.cc.
References dramsim.
Referenced by gem5::memory::DRAMsim3::tick().
|
private |
Definition at line 84 of file dramsim3_wrapper.hh.
Referenced by burstSize(), and DRAMsim3Wrapper().
|
private |
Definition at line 80 of file dramsim3_wrapper.hh.
Referenced by clockPeriod(), and DRAMsim3Wrapper().
|
private |
Definition at line 82 of file dramsim3_wrapper.hh.
Referenced by DRAMsim3Wrapper(), and queueSize().
|
private |
Definition at line 78 of file dramsim3_wrapper.hh.
Referenced by canAccept(), DRAMsim3Wrapper(), enqueue(), printStats(), resetStats(), setCallbacks(), tick(), and ~DRAMsim3Wrapper().