gem5
|
Wrapper class to avoid having DRAMSim2 names like ClockDomain etc clashing with the normal gem5 world. More...
#include <dramsim2_wrapper.hh>
Public Member Functions | |
DRAMSim2Wrapper (const std::string &config_file, const std::string &system_file, const std::string &working_dir, const std::string &trace_file, unsigned int memory_size_mb, bool enable_debug) | |
Create an instance of the DRAMSim2 multi-channel memory controller using a specific config and system description. More... | |
~DRAMSim2Wrapper () | |
void | printStats () |
Print the stats gathered in DRAMsim2. More... | |
void | setCallbacks (DRAMSim::TransactionCompleteCB *read_callback, DRAMSim::TransactionCompleteCB *write_callback) |
Set the callbacks to use for read and write completion. More... | |
bool | canAccept () const |
Determine if the controller can accept a new packet or not. More... | |
void | enqueue (bool is_write, uint64_t addr) |
Enqueue a packet. More... | |
double | clockPeriod () const |
Get the internal clock period used by DRAMSim2, specified in ns. More... | |
unsigned int | queueSize () const |
Get the transaction queue size used by DRAMSim2. More... | |
unsigned int | burstSize () const |
Get the burst size in bytes used by DRAMSim2. More... | |
void | tick () |
Progress the memory controller one cycle. More... | |
Private Member Functions | |
template<typename T > | |
T | extractConfig (const std::string &field_name, const std::string &file_name) const |
Private Attributes | |
DRAMSim::MultiChannelMemorySystem * | dramsim |
double | _clockPeriod |
unsigned int | _queueSize |
unsigned int | _burstSize |
Wrapper class to avoid having DRAMSim2 names like ClockDomain etc clashing with the normal gem5 world.
Many of the DRAMSim2 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 69 of file dramsim2_wrapper.hh.
DRAMSim2Wrapper::DRAMSim2Wrapper | ( | const std::string & | config_file, |
const std::string & | system_file, | ||
const std::string & | working_dir, | ||
const std::string & | trace_file, | ||
unsigned int | memory_size_mb, | ||
bool | enable_debug | ||
) |
Create an instance of the DRAMSim2 multi-channel memory controller using a specific config and system description.
config_file | Memory config file |
system_file | Controller config file |
working_dir | Path pre-pended to config files |
trace_file | Output trace file |
memory_size_mb | Total memory size in MByte |
enable_debug | Enable debug output |
Definition at line 66 of file dramsim2_wrapper.cc.
References _burstSize, _clockPeriod, _queueSize, dramsim, fatal, and SHOW_SIM_OUTPUT.
DRAMSim2Wrapper::~DRAMSim2Wrapper | ( | ) |
Definition at line 115 of file dramsim2_wrapper.cc.
References dramsim.
unsigned int DRAMSim2Wrapper::burstSize | ( | ) | const |
Get the burst size in bytes used by DRAMSim2.
Definition at line 191 of file dramsim2_wrapper.cc.
References _burstSize.
Referenced by DRAMSim2::init().
bool DRAMSim2Wrapper::canAccept | ( | ) | const |
Determine if the controller can accept a new packet or not.
Definition at line 166 of file dramsim2_wrapper.cc.
References dramsim.
Referenced by DRAMSim2::recvTimingReq().
double DRAMSim2Wrapper::clockPeriod | ( | ) | const |
Get the internal clock period used by DRAMSim2, specified in ns.
Definition at line 179 of file dramsim2_wrapper.cc.
References _clockPeriod.
Referenced by DRAMSim2::DRAMSim2(), DRAMSim2::readComplete(), DRAMSim2::tick(), and DRAMSim2::writeComplete().
void DRAMSim2Wrapper::enqueue | ( | bool | is_write, |
uint64_t | addr | ||
) |
Enqueue a packet.
This assumes that canAccept has returned true.
Definition at line 172 of file dramsim2_wrapper.cc.
References dramsim, and M5_VAR_USED.
Referenced by DRAMSim2::recvTimingReq().
|
private |
Definition at line 122 of file dramsim2_wrapper.cc.
References fatal.
void DRAMSim2Wrapper::printStats | ( | ) |
Print the stats gathered in DRAMsim2.
Definition at line 152 of file dramsim2_wrapper.cc.
References dramsim.
Referenced by DRAMSim2::DRAMSim2().
unsigned int DRAMSim2Wrapper::queueSize | ( | ) | const |
Get the transaction queue size used by DRAMSim2.
Definition at line 185 of file dramsim2_wrapper.cc.
References _queueSize.
Referenced by DRAMSim2::DRAMSim2(), DRAMSim2::recvTimingReq(), and DRAMSim2::tick().
void DRAMSim2Wrapper::setCallbacks | ( | DRAMSim::TransactionCompleteCB * | read_callback, |
DRAMSim::TransactionCompleteCB * | write_callback | ||
) |
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 158 of file dramsim2_wrapper.cc.
References dramsim.
Referenced by DRAMSim2::DRAMSim2().
void DRAMSim2Wrapper::tick | ( | ) |
Progress the memory controller one cycle.
Definition at line 197 of file dramsim2_wrapper.cc.
References dramsim.
Referenced by DRAMSim2::tick().
|
private |
Definition at line 80 of file dramsim2_wrapper.hh.
Referenced by burstSize(), and DRAMSim2Wrapper().
|
private |
Definition at line 76 of file dramsim2_wrapper.hh.
Referenced by clockPeriod(), and DRAMSim2Wrapper().
|
private |
Definition at line 78 of file dramsim2_wrapper.hh.
Referenced by DRAMSim2Wrapper(), and queueSize().
|
private |
Definition at line 74 of file dramsim2_wrapper.hh.
Referenced by canAccept(), DRAMSim2Wrapper(), enqueue(), printStats(), setCallbacks(), tick(), and ~DRAMSim2Wrapper().