35#ifndef __MEM_RUBY_SYSTEM_RUBYSYSTEM_HH__
36#define __MEM_RUBY_SYSTEM_RUBYSYSTEM_HH__
38#include <unordered_map>
47#include "params/RubySystem.hh"
62class AbstractController;
102 void init()
override;
130 uint64_t cache_trace_size,
131 uint64_t block_size_bytes);
135 uint64_t &uncompressed_trace_size);
137 uint64_t uncompressed_trace_size);
165 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)
bool functionalWrite(Packet *ptr)
RubySystem & operator=(const RubySystem &obj)
uint32_t getBlockSizeBits()
void unserialize(CheckpointIn &cp) override
Unserialize an object.
const bool m_access_backing_store
uint32_t getMemorySizeBits()
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
std::vector< std::map< uint32_t, AbstractController * > > m_abstract_controls
void registerMachineID(const MachineID &mach_id, Network *network)
std::unique_ptr< ProtocolInfo > protocolInfo
std::unordered_map< RequestorID, unsigned > requestorToNetwork
static void writeCompressedTrace(uint8_t *raw_data, std::string file, uint64_t uncompressed_trace_size)
void registerNetwork(Network *)
bool getCooldownEnabled()
void startup() override
startup() is the final initialization call before simulation.
std::unordered_map< MachineID, unsigned > machineToNetwork
uint32_t getBlockSizeBytes()
memory::SimpleMemory * getPhysMem()
static void readCompressedTrace(std::string filename, uint8_t *&raw_data, uint64_t &uncompressed_trace_size)
bool simpleFunctionalRead(PacketPtr pkt)
CacheRecorder * m_cache_recorder
uint32_t m_block_size_bits
std::vector< std::unique_ptr< Network > > m_networks
void drainResume() override
Resume execution after a successful drain.
uint32_t m_block_size_bytes
std::vector< AbstractController * > m_abs_cntrl_vec
void resetStats() override
Callback to reset stats.
bool partialFunctionalRead(PacketPtr pkt)
const ProtocolInfo & getProtocolInfo()
memory::SimpleMemory * m_phys_mem
std::unordered_map< unsigned, std::vector< AbstractController * > > netCntrls
uint32_t m_memory_size_bits
bool getAccessBackingStore()
void regStats() override
Callback to set stat parameters.
int MachineType_base_number(const MachineType &obj)
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.
int MachineType_base_count(const MachineType &obj)
void registerAbstractController(AbstractController *, std::unique_ptr< ProtocolInfo >)
RubySystem(const RubySystem &obj)
std::map< MachineType, uint32_t > m_num_controllers
void registerRequestorIDs()
void memWriteback() override
Write back dirty buffers to memory using functional writes.
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 Arm Limited All rights reserved.
std::ostream CheckpointOut
uint64_t Tick
Tick count type.
Declaration of the Packet class.