|
SST 16.0.0
Structural Simulation Toolkit
|
Generic interface to Memory models. More...
#include <stdMem.h>
Data Structures | |
| class | Request |
| Base class for StandardMem commands. More... | |
| class | Read |
| Read request. More... | |
| class | ReadResp |
| Response to a Read. More... | |
| class | Write |
| Request to write data. More... | |
| class | WriteResp |
| Response to a Write. More... | |
| class | FlushAddr |
| class | FlushCache |
| class | FlushResp |
| Response to a flush request. More... | |
| class | ReadLock |
| Locked atomic update -> guaranteed success A ReadLock must be followed by a WriteUnlock. More... | |
| class | WriteUnlock |
| class | LoadLink |
| Conditional atomic update. More... | |
| class | StoreConditional |
| class | MoveData |
| Move: move data from one address to another Returns a WriteResp. More... | |
| class | InvNotify |
| Notifies endpoint that an address has been invalidated from the L1. More... | |
| class | CustomData |
| class | CustomReq |
| class | CustomResp |
| class | RequestConverter |
| class | RequestHandler |
Public Types | |
| using | HandlerBase = SSTHandlerBase<void, Request*> |
| Base handler for request handling. | |
| template<typename classT, auto funcT, typename dataT = void> | |
| using | Handler = SSTHandler<void, Request*, classT, dataT, funcT> |
| Used to create checkpointable handlers for request handling. | |
| using | Addr = uint64_t |
| All Addresses can be 64-bit. | |
Public Member Functions | |
| StandardMem (SST::ComponentId_t id, Params &UNUSED(params), TimeConverter UNUSED(time), HandlerBase *&UNUSED(handler)) | |
| Constructor, designed to be used via 'loadUserSubComponent' and 'loadAnonymousSubComponent'. | |
| StandardMem () | |
| Default constructor, used for serialization ONLY. | |
| virtual void | sendUntimedData (Request *req)=0 |
| Sends a memory-based request during the init()/complete() phases. | |
| virtual Request * | recvUntimedData ()=0 |
| Receive any data during the init()/complete() phases. | |
| virtual void | send (Request *req)=0 |
| Send a Request through the interface. | |
| virtual Request * | poll ()=0 |
| Receive a Request response from the side of the link. | |
| virtual Addr | getLineSize ()=0 |
| Get cache/memory line size (in bytes) from the memory system. | |
| virtual void | setMemoryMappedAddressRegion (Addr start, Addr size)=0 |
| Sets the physical memory address(es), if any, that are mapped to this endpoint. | |
| void | serialize_order (SST::Core::Serialization::serializer &ser) override |
| Serialization function. | |
| Public Member Functions inherited from SST::SubComponent | |
| SST_ELI_DECLARE_INFO_EXTERN (ELI::ProvidesInterface, ELI::ProvidesParams, ELI::ProvidesPorts, ELI::ProvidesSubComponentSlots, ELI::ProvidesStats, ELI::ProvidesCheckpointable, ELI::ProvidesProfilePoints, ELI::ProvidesAttributes) explicit SubComponent(ComponentId_t id) | |
| virtual void | init (unsigned int UNUSED(phase)) override |
| Used during the init phase. | |
| virtual void | setup () override |
| Called after all components have been constructed and initialization has completed, but before simulation time has begun. | |
| virtual void | finish () override |
| Called after simulation completes, but before objects are destroyed. | |
| Public Member Functions inherited from SST::BaseComponent | |
| BaseComponent (ComponentId_t id) | |
| BaseComponent (const BaseComponent &)=delete | |
| BaseComponent & | operator= (const BaseComponent &)=delete |
| const std::string & | getType () const |
| Gets the ELI type for this BaseComponent. | |
| ComponentId_t | getId () const |
| Get the unique component ID. | |
| uint8_t | getStatisticLoadLevel () const |
| Get the BaseComponent Statistic load level. | |
| virtual void | emergencyShutdown () |
| Called when SIGINT or SIGTERM has been seen. | |
| const std::string & | getName () const |
| Get the name of the BaseComponent. | |
| const std::string & | getParentComponentName () const |
| Get the name of the parent Component for the Component tree. | |
| virtual void | complete (unsigned int UNUSED(phase)) |
| Used during the complete phase after the end of simulation. | |
| virtual bool | Status () |
| Currently unused function. | |
| virtual void | printStatus (Output &UNUSED(out)) |
| Called by the Simulation to request that the component print its current status. | |
| UnitAlgebra | getCoreTimeBase () const |
| Get the core timebase. | |
| SimTime_t | getCurrentSimCycle () const |
| Get the current simulation time as a cycle count. | |
| int | getCurrentPriority () const |
| Get the current priority. | |
| UnitAlgebra | getElapsedSimTime () const |
| get the elapsed simulation time as a UnitAlgebra | |
| SimTime_t | getEndSimCycle () const |
| Get the end simulation time as a cycle count. | |
| UnitAlgebra | getEndSimTime () const |
| Get the end simulation time as a UnitAlgebra. | |
| RankInfo | getRank () const |
| Get this instance's parallel rank. | |
| RankInfo | getNumRanks () const |
| Get the number of parallel ranks in the simulation. | |
| SimTime_t | getCurrentSimTime () const |
| Return the simulated time since the simulation began in the default timebase. | |
| SimTime_t | getCurrentSimTime (TimeConverter base) const |
| Get the simulated time since the simulation began in units specified by the parameter. | |
| SimTime_t | getCurrentSimTime (const std::string &base) const |
| Return the simulated time since the simulation began in the specified timebase. | |
| SimTime_t | getCurrentSimTime (const char *base) const |
| Return the simulated time since the simulation began in the specified timebase. | |
| 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. | |
| double | getRunPhaseElapsedRealTime () const |
| Get the amount of real-time spent executing the run phase of the simulation. | |
| double | getInitPhaseElapsedRealTime () const |
| Get the amount of real-time spent executing the init phase of the simulation. | |
| double | getCompletePhaseElapsedRealTime () const |
| Get the amount of real-time spent executing the complete phase of the simulation. | |
| void | addWatchPoint (WatchPoint *pt) |
| Add a watch point to all handlers in the Component Tree. | |
| void | removeWatchPoint (WatchPoint *pt) |
| Remove a watch point from all handlers in the Component Tree. | |
| SubComponentSlotInfo * | getSubComponentSlotInfo (const std::string &name, bool fatalOnEmptyIndex=false) |
| const std::vector< double > & | getCoordinates () const |
| Retrieve the X,Y,Z coordinates of this component. | |
| Public Member Functions inherited from SST::Core::Serialization::serializable_base | |
| virtual const char * | cls_name () const =0 |
| virtual uint32_t | cls_id () const =0 |
| virtual std::string | serialization_name () const =0 |
Additional Inherited Members | |
| Static Public Member Functions inherited from SST::BaseComponent | |
| static Output & | getSimulationOutput () |
| Get the default simulation Output class instance. | |
| Static Public Attributes inherited from SST::Core::Serialization::serializable_base | |
| static constexpr uint32_t | NullClsId = std::numeric_limits<uint32_t>::max() |
| Protected Types inherited from SST::BaseComponent | |
| using | StatCreateFunction |
| Protected Types inherited from SST::Core::Serialization::serializable_base | |
| enum | cxn_flag_t { ConstructorFlag } |
| Protected Member Functions inherited from SST::SubComponent | |
| void | serialize_order (SST::Core::Serialization::serializer &ser) override |
| ImplementSerializable (SST::SubComponent) | |
| Protected Member Functions inherited from SST::BaseComponent | |
| bool | isSimulationRunModeInit () const |
| Check to see if the run mode was set to INIT. | |
| bool | isSimulationRunModeRun () const |
| Check to see if the run mode was set to RUN. | |
| bool | isSimulationRunModeBoth () const |
| Check to see if the run mode was set to BOTH. | |
| std::string & | getOutputDirectory () const |
| Returns the output directory of the simulation. | |
| void | requireLibrary (const std::string &name) |
| Signifies that a library is required for this simulation. | |
| bool | isPortConnected (const std::string &name) const |
| Determine if a port name is connected to any links. | |
| Link * | configureLink (const std::string &name, TimeConverter timebase, Event::HandlerBase *handler=nullptr) |
| Configure a Link. | |
| Link * | configureLink (const std::string &name, Event::HandlerBase *handler=nullptr) |
| Configure a Link. | |
| Link * | configureSelfLink (const std::string &name, TimeConverter timebase, Event::HandlerBase *handler=nullptr) |
| Configure a SelfLink (Loopback link). | |
| Link * | configureSelfLink (const std::string &name, Event::HandlerBase *handler=nullptr) |
| Configure a SelfLink (Loopback link) that uses the (Sub)Component's defaultTimeBase. | |
| TimeConverter | registerClock (TimeConverter tc, Clock::HandlerBase *handler, bool reg_all=true) |
| Registers a clock for this component. | |
| 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. | |
| Cycle_t | getNextClockCycle (TimeConverter freq) |
| Returns the next Cycle that the TimeConverter would fire. | |
| TimeConverter | registerTimeBase (const std::string &base, bool reg_all=true) |
| Registers a default timebase for the component and optionally sets the the component's links to that timebase. | |
| TimeConverter | getTimeConverter (const std::string &base) const |
| TimeConverter | getTimeConverter (const UnitAlgebra &base) const |
| bool | isStatisticShared (const std::string &stat_name, bool include_me=false) |
| void | initiateInteractive (const std::string &msg) |
| Tell the simulation object to initiate interactive mode (if currently turned on). | |
| template<typename T> | |
| Statistics::Statistic< T > * | registerStatistic (SST::Params ¶ms, const std::string &stat_name, const std::string &stat_sub_id="") |
| Registers a statistic. | |
| template<typename T> | |
| Statistics::Statistic< T > * | registerStatistic (const std::string &stat_name, const std::string &stat_sub_id="") |
| template<typename... Args> | |
| Statistics::Statistic< std::tuple< Args... > > * | registerMultiStatistic (const std::string &stat_name, const std::string &stat_sub_id="") |
| template<typename... Args> | |
| Statistics::Statistic< std::tuple< Args... > > * | registerMultiStatistic (SST::Params ¶ms, const std::string &stat_name, const std::string &stat_sub_id="") |
| template<typename T> | |
| Statistics::Statistic< T > * | registerStatistic (const char *stat_name, const char *stat_sub_id="") |
| void | performStatisticOutput (Statistics::StatisticBase *stat) |
| Called by the Components and Subcomponent to perform a statistic Output. | |
| void | performGlobalStatisticOutput () |
| Performs a global statistic Output. | |
| template<typename T> | |
| T::ProfilePoint * | registerProfilePoint (const std::string &point_name) |
| Registers a profiling point. | |
| template<class T, class... ARGS> | |
| T * | loadModule (const std::string &type, Params ¶ms, ARGS... args) |
| Loads a module from an element Library. | |
| 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. | |
| template<class T> | |
| bool | isUserSubComponentLoadableUsingAPI (const std::string &slot_name) |
| Check to see if the element type loaded by the user into the. | |
| 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). | |
| template<class T> | |
| T * | loadUserSubComponent (const std::string &slot_name) |
| Loads a user defined subcomponent (defined in input file to SST run). | |
| 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). | |
| void | fatal (uint32_t line, const char *file, const char *func, int exit_code, const char *format,...) const |
| Convenience function for reporting fatal conditions. | |
| 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. | |
| bool | isAnonymous () |
| bool | isUser () |
| void | setDefaultTimeBase (TimeConverter tc) |
| Manually set the default defaultTimeBase. | |
| TimeConverter | getDefaultTimeBase () |
| const TimeConverter | getDefaultTimeBase () const |
| bool | doesSubComponentExist (const std::string &type) |
| uint8_t | getStatisticValidityAndLevel (const std::string &statisticName) const |
| std::vector< Profile::ComponentProfileTool * > | getComponentProfileTools (const std::string &point) |
| void | registerAsPrimaryComponent () |
| Register as a primary component, which allows the component to specify when it is and is not OK to end simulation. | |
| void | primaryComponentDoNotEndSim () |
| Tells the simulation that it should not exit. | |
| void | primaryComponentOKToEndSim () |
| Tells the simulation that it is now OK to end simulation. | |
| Static Protected Member Functions inherited from SST::Core::Serialization::serializable_base | |
| static void | serializable_abort (uint32_t line, const char *file, const char *func, const char *obj) |
Generic interface to Memory models.
Implementation notes Instructions can be sent into a memory system using derivatives of Request(). This interface can be used by both compute hosts (e.g., CPUs) and MMIO devices (e.g., accelerator). Not all interfaces/memory systems support all Request types. The interface should return an error if it encounters an unhandled type.
Request class:
Built-in commands Basic:
| using SST::Interfaces::StandardMem::Handler = SSTHandler<void, Request*, classT, dataT, funcT> |
Used to create checkpointable 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 StdMem::Handler<classname, &classname::function_name>(this)
Or, to add static data, the callback function is:
void func(Request* event, dataT data)
and the class is created with:
new stdMem::Handler<classname, &classname::function_name, dataT>(this, data)
|
inline |
Constructor, designed to be used via 'loadUserSubComponent' and 'loadAnonymousSubComponent'.
| id | Component ID assigned to this subcomponent |
| params | Parameters passed to this subcomponent |
| time | TimeConverter indicating the time base (e.g., clock period) associated with this endpoint |
| handler | Callback function to use for event receives |
|
pure virtual |
Get cache/memory line size (in bytes) from the memory system.
The memory system should provide this and it should be valid after the init() phase is complete, so processors can safely call this function during setup().
|
pure virtual |
Receive a Request response from the side of the link.
Use this method for polling-based applications. Register a handler for push-based notification of responses.
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
inlineoverridevirtual |
Serialization function.
Implements SST::Core::Serialization::serializable_base.
|
pure virtual |
Sets the physical memory address(es), if any, that are mapped to this endpoint.
Not required for endpoints that are not mapped into the memory address space.
Components loading this subcomponent as an MMIO device must call this function prior to SST's init() phase.
| start | Base address of the region mapped to this endpoint |
| size | Size, in bytes, of the region mapped to this endpoint |