SST
11.1.0
StructuralSimulationToolkit
|
Simplified, generic interface to Memory models. More...
#include <simpleMem.h>
Data Structures | |
class | Request |
Represents both memory requests and responses. More... | |
Public Types | |
using | HandlerBase = SSTHandlerBase< void, Request *, false > |
Base handler for request handling. | |
template<typename classT , typename dataT = void> | |
using | Handler = SSTHandler< void, Request *, false, classT, dataT > |
Used to create handlers for request handling. More... | |
typedef uint64_t | Addr |
All Addresses can be 64-bit. | |
Public Member Functions | |
SimpleMem (SST::ComponentId_t id, Params &UNUSED(params)) | |
Constructor, designed to be used via 'loadUserSubComponent and loadAnonymousSubComponent'. More... | |
virtual bool | initialize (const std::string &linkName, HandlerBase *handler=nullptr)=0 |
Second half of building the interface. More... | |
virtual void | sendInitData (Request *req)=0 |
Sends a memory-based request during the init() phase. | |
virtual void | sendInitData (SST::Event *ev) |
Sends a generic Event during the init() phase (Mostly acts as a passthrough) More... | |
virtual SST::Event * | recvInitData () |
Receive any data during the init() phase. More... | |
virtual SST::Link * | getLink (void) const =0 |
Returns a handle to the underlying SST::Link. | |
virtual void | sendRequest (Request *req)=0 |
Send a Request to the other side of the link. | |
virtual Request * | recvResponse (void)=0 |
Receive a Request response from the side of the link. More... | |
virtual Addr | getLineSize () |
Get cache/memory line size from the memory system. More... | |
Public Member Functions inherited from SST::SubComponent | |
SST_ELI_DECLARE_INFO_EXTERN (ELI::ProvidesParams, ELI::ProvidesSubComponentSlots, ELI::ProvidesPorts, ELI::ProvidesStats, ELI::ProvidesInterface) SubComponent(ComponentId_t id) | |
virtual void | init (unsigned int UNUSED(phase)) override |
Used during the init phase. More... | |
virtual void | setup () override |
Called after all components have been constructed and initialization has completed, but before simulation time has begun. More... | |
virtual void | finish () override |
Called after simulation completes, but before objects are destroyed. More... | |
Public Member Functions inherited from SST::Module | |
SST_ELI_DECLARE_CTORS (ELI_CTOR(SST::Params &), ELI_CTOR(Component *, SST::Params &)) Module() | |
Public Member Functions inherited from SST::BaseComponent | |
BaseComponent (ComponentId_t id) | |
const std::string & | getType () const |
ComponentId_t | getId () const |
Returns unique component ID. | |
uint8_t | getStatisticLoadLevel () const |
Returns Component Statistic load level. | |
virtual void | emergencyShutdown (void) |
Called when SIGINT or SIGTERM has been seen. More... | |
const std::string & | getName () const |
Returns Component/SubComponent Name. | |
const std::string & | getParentComponentName () const |
Returns the name of the parent Component, or, if called on a Component, the name of that Component. More... | |
virtual void | complete (unsigned int UNUSED(phase)) |
Used during the init phase. More... | |
virtual bool | Status () |
Currently unused function. | |
virtual void | printStatus (Output &UNUSED(out)) |
Called by the Simulation to request that the component print it's current status. More... | |
SimTime_t | getCurrentSimCycle () const |
Return the current simulation time as a cycle count. | |
int | getCurrentPriority () const |
Return the current priority. | |
UnitAlgebra | getElapsedSimTime () const |
Return the elapsed simulation time as a time. | |
UnitAlgebra | getFinalSimTime () const |
Return the end simulation time as a time. | |
RankInfo | getRank () const |
Get this instance's parallel rank. | |
RankInfo | getNumRanks () const |
Get the number of parallel ranks in the simulation. | |
Output & | getSimulationOutput () const |
Return the base simulation Output class instance. | |
SimTime_t | getCurrentSimTime (TimeConverter *tc) const |
return the time since the simulation began in units specified by the parameter. More... | |
SimTime_t | getCurrentSimTime () const |
return the time since the simulation began in the default timebase | |
SimTime_t | getCurrentSimTime (const std::string &base) const |
return the time since the simulation began in timebase specified More... | |
SimTime_t | getCurrentSimTimeNano () const |
Utility function to return the time since the simulation began in nanoseconds. | |
SimTime_t | getCurrentSimTimeMicro () const |
Utility function to return the time since the simulation began in microseconds. | |
SimTime_t | getCurrentSimTimeMilli () const |
Utility function to return the time since the simulation began in milliseconds. | |
SubComponentSlotInfo * | getSubComponentSlotInfo (const std::string &name, bool fatalOnEmptyIndex=false) |
const std::vector< double > & | getCoordinates () const |
Retrieve the X,Y,Z coordinates of this component. | |
Additional Inherited Members | |
Protected Types inherited from SST::BaseComponent | |
using | StatCreateFunction = std::function< Statistics::StatisticBase *(BaseComponent *, Statistics::StatisticProcessingEngine *, const std::string &, const std::string &, const std::string &, Params &)> |
Protected Member Functions inherited from SST::BaseComponent | |
bool | isPortConnected (const std::string &name) const |
Determine if a port name is connected to any links. | |
Link * | configureLink (const std::string &name, TimeConverter *time_base, Event::HandlerBase *handler=nullptr) |
Configure a Link. More... | |
Link * | configureLink (const std::string &name, const std::string &time_base, Event::HandlerBase *handler=nullptr) |
Configure a Link. More... | |
Link * | configureLink (const std::string &name, const UnitAlgebra &time_base, Event::HandlerBase *handler=nullptr) |
Configure a Link. More... | |
Link * | configureLink (const std::string &name, Event::HandlerBase *handler=nullptr) |
Configure a Link. More... | |
Link * | configureSelfLink (const std::string &name, TimeConverter *time_base, Event::HandlerBase *handler=nullptr) |
Configure a SelfLink (Loopback link) More... | |
Link * | configureSelfLink (const std::string &name, const std::string &time_base, Event::HandlerBase *handler=nullptr) |
Configure a SelfLink (Loopback link) More... | |
Link * | configureSelfLink (const std::string &name, const UnitAlgebra &time_base, Event::HandlerBase *handler=nullptr) |
Configure a SelfLink (Loopback link) More... | |
Link * | configureSelfLink (const std::string &name, Event::HandlerBase *handler=nullptr) |
Configure a SelfLink (Loopback link) More... | |
TimeConverter * | registerClock (const std::string &freq, Clock::HandlerBase *handler, bool regAll=true) |
Registers a clock for this component. More... | |
TimeConverter * | registerClock (const UnitAlgebra &freq, Clock::HandlerBase *handler, bool regAll=true) |
Registers a clock for this component. More... | |
TimeConverter * | registerClock (TimeConverter *tc, Clock::HandlerBase *handler, bool regAll=true) |
Registers a clock for this component. More... | |
void | unregisterClock (TimeConverter *tc, Clock::HandlerBase *handler) |
Removes a clock handler from the component. | |
Cycle_t | reregisterClock (TimeConverter *freq, Clock::HandlerBase *handler) |
Reactivates an existing Clock and Handler. More... | |
Cycle_t | getNextClockCycle (TimeConverter *freq) |
Returns the next Cycle that the TimeConverter would fire. | |
TimeConverter * | registerTimeBase (const std::string &base, bool regAll=true) |
Registers a default time base for the component and optionally sets the the component's links to that timebase. More... | |
TimeConverter * | getTimeConverter (const std::string &base) const |
TimeConverter * | getTimeConverter (const UnitAlgebra &base) const |
TimeConverter * | getTimeConverterNano () const |
TimeConverter * | getTimeConverterMicro () const |
TimeConverter * | getTimeConverterMilli () const |
bool | isStatisticShared (const std::string &statName, bool include_me=false) |
template<typename T > | |
Statistics::Statistic< T > * | createStatistic (SST::Params ¶ms, StatisticId_t id, const std::string &name, const std::string &statSubId) |
template<typename T > | |
Statistics::Statistic< T > * | createNullStatistic (SST::Params ¶ms, const std::string &name, const std::string &statSubId="") |
template<typename T > | |
Statistics::Statistic< T > * | registerStatistic (SST::Params ¶ms, const std::string &statName, const std::string &statSubId="", bool inserting=false) |
Registers a statistic. More... | |
template<typename T > | |
Statistics::Statistic< T > * | registerStatistic (const std::string &statName, const std::string &statSubId="") |
template<typename... Args> | |
Statistics::Statistic < std::tuple< Args...> > * | registerMultiStatistic (const std::string &statName, const std::string &statSubId="") |
template<typename... Args> | |
Statistics::Statistic < std::tuple< Args...> > * | registerMultiStatistic (SST::Params ¶ms, const std::string &statName, const std::string &statSubId="") |
template<typename T > | |
Statistics::Statistic< T > * | registerStatistic (const char *statName, const char *statSubId="") |
void | performStatisticOutput (Statistics::StatisticBase *stat) |
Called by the Components and Subcomponent to perform a statistic Output. More... | |
void | performGlobalStatisticOutput () |
Performs a global statistic Output. More... | |
Module * | loadModule (const std::string &type, Params ¶ms) |
Loads a module from an element Library. More... | |
template<class T , class... ARGS> | |
T * | loadModule (const std::string &type, Params ¶ms, ARGS...args) |
Loads a module from an element Library. More... | |
template<class T , class... ARGS> | |
T * | loadComponentExtension (ARGS...args) |
template<class T > | |
bool | isSubComponentLoadableUsingAPI (const std::string &type) |
Check to see if a given element type is loadable with a particular API. More... | |
template<class T > | |
bool | isUserSubComponentLoadableUsingAPI (const std::string &slot_name) |
Check to see if the element type loaded by the user into the. More... | |
template<class T , class... ARGS> | |
T * | loadAnonymousSubComponent (const std::string &type, const std::string &slot_name, int slot_num, uint64_t share_flags, Params ¶ms, ARGS...args) |
Loads an anonymous subcomponent (not defined in input file to SST run). More... | |
template<class T > | |
T * | loadUserSubComponent (const std::string &slot_name) |
Loads a user defined subcomponent (defined in input file to SST run). More... | |
template<class T , class... ARGS> | |
T * | loadUserSubComponent (const std::string &slot_name, uint64_t share_flags, ARGS...args) |
Loads a user defined subcomponent (defined in input file to SST run). More... | |
void | fatal (uint32_t line, const char *file, const char *func, int exit_code, const char *format,...) const |
Convenience function for reporting fatal conditions. More... | |
void | sst_assert (bool condition, uint32_t line, const char *file, const char *func, int exit_code, const char *format,...) const |
Convenience function for testing for and reporting fatal conditions. More... | |
bool | isAnonymous () |
bool | isUser () |
void | setDefaultTimeBase (TimeConverter *tc) |
Manually set the default detaulTimeBase. | |
TimeConverter * | getDefaultTimeBase () |
const TimeConverter * | getDefaultTimeBase () const |
bool | doesSubComponentExist (const std::string &type) |
SharedRegion * | getLocalSharedRegion (const std::string &key, size_t size) |
Find a lookup table. | |
SharedRegion * | getGlobalSharedRegion (const std::string &key, size_t size, SharedRegionMerger *merger=nullptr) |
Simulation * | getSimulation () const |
virtual bool | doesComponentInfoStatisticExist (const std::string &statisticName) const |
uint8_t | getComponentInfoStatisticEnableLevel (const std::string &statisticName) const |
Simplified, generic interface to Memory models.
using SST::Interfaces::SimpleMem::Handler = SSTHandler<void, Request*, false, classT, dataT> |
Used to create handlers for request handling.
The callback function is expected to be in the form of:
void func(Request* event)
In which case, the class is created with:
new SimpleMem::Handler<classname>(this, &classname::function_name)
Or, to add static data, the callback function is:
void func(Request* event, dataT data)
and the class is created with:
new SimpleMem::Handler<classname, dataT>(this, &classname::function_name, data)
|
inline |
Constructor, designed to be used via 'loadUserSubComponent and loadAnonymousSubComponent'.
|
inlinevirtual |
Get cache/memory line size from the memory system.
The memory system should provide this and it should be valid after the init() phase is complete, so processors can call this function during setup().
For backward compatibiity, the function returns 0 by default. Eventually, interfaces will be required to implement this function.
|
pure virtual |
Second half of building the interface.
Initialize with link name name, and handler, if any
|
inlinevirtual |
Receive any data during the init() phase.
References getLink(), and SST::Link::recvInitData().
|
pure virtual |
|
inlinevirtual |
Sends a generic Event during the init() phase (Mostly acts as a passthrough)
References getLink(), and SST::Link::sendInitData().