35#ifndef __MEM_RUBY_SYSTEM_RUBYSYSTEM_HH__
36#define __MEM_RUBY_SYSTEM_RUBYSYSTEM_HH__
38#include <unordered_map>
46#include "params/RubySystem.hh"
61class AbstractController;
101 void init()
override;
125 uint64_t cache_trace_size,
126 uint64_t block_size_bytes);
130 uint64_t &uncompressed_trace_size);
132 uint64_t uncompressed_trace_size);
155 std::unordered_map<unsigned, std::vector<AbstractController*>>
netCntrls;
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
ClockedObjectParams Params
Parameters of ClockedObject.
Cycles is a wrapper class for representing cycle counts, i.e.
EventQueue * eventq
A pointer to this object's event queue.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
The simple memory is a basic single-ported memory controller with a configurable throughput and laten...
void enqueueRubyEvent(Tick tick)
static bool m_warmup_enabled
static bool getWarmupEnabled()
bool functionalWrite(Packet *ptr)
RubySystem & operator=(const RubySystem &obj)
static uint32_t getBlockSizeBytes()
void unserialize(CheckpointIn &cp) override
Unserialize an object.
const bool m_access_backing_store
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
static bool m_cooldown_enabled
std::vector< std::map< uint32_t, AbstractController * > > m_abstract_controls
void registerMachineID(const MachineID &mach_id, Network *network)
static bool m_randomization
static unsigned m_systems_to_warmup
std::unordered_map< RequestorID, unsigned > requestorToNetwork
static void writeCompressedTrace(uint8_t *raw_data, std::string file, uint64_t uncompressed_trace_size)
RubySystem(const Params &p)
void registerNetwork(Network *)
void startup() override
startup() is the final initialization call before simulation.
static uint32_t getBlockSizeBits()
std::unordered_map< MachineID, unsigned > machineToNetwork
memory::SimpleMemory * getPhysMem()
static void readCompressedTrace(std::string filename, uint8_t *&raw_data, uint64_t &uncompressed_trace_size)
void registerAbstractController(AbstractController *)
CacheRecorder * m_cache_recorder
static uint32_t m_block_size_bits
std::vector< std::unique_ptr< Network > > m_networks
void drainResume() override
Resume execution after a successful drain.
static uint32_t m_block_size_bytes
std::vector< AbstractController * > m_abs_cntrl_vec
void resetStats() override
Callback to reset stats.
memory::SimpleMemory * m_phys_mem
std::unordered_map< unsigned, std::vector< AbstractController * > > netCntrls
static uint32_t m_memory_size_bits
bool getAccessBackingStore()
static int getRandomization()
void regStats() override
Callback to set stat parameters.
static uint32_t getMemorySizeBits()
bool functionalRead(Packet *ptr)
void makeCacheRecorder(uint8_t *uncompressed_trace, uint64_t cache_trace_size, uint64_t block_size_bytes)
void serialize(CheckpointOut &cp) const override
Serialize an object.
RubySystem(const RubySystem &obj)
void registerRequestorIDs()
void memWriteback() override
Write back dirty buffers to memory using functional writes.
static bool getCooldownEnabled()
ClockedObject declaration and implementation.
void schedule(Event &event, Tick when)
bool empty() const
Returns true if no events are queued.
virtual void regStats()
Callback to set stat parameters.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::ostream CheckpointOut
uint64_t Tick
Tick count type.
Declaration of the Packet class.