gem5
|
This is an interface between the disk interface (which will handle the disk data transactions) and the timing model. More...
#include <abstract_nvm.hh>
Public Member Functions | |
AbstractNVM (const AbstractNVMParams *p) | |
virtual | ~AbstractNVM () |
virtual void | initializeMemory (uint64_t disk_size, uint32_t sector_size)=0 |
Initialize Memory. More... | |
virtual void | readMemory (uint64_t address, uint32_t amount, Callback *event)=0 |
Access functions Access function to simulate a read/write access to the memory. More... | |
virtual void | writeMemory (uint64_t address, uint32_t amount, Callback *event)=0 |
Public Member Functions inherited from SimObject | |
const Params * | params () const |
SimObject (const Params *_params) | |
virtual | ~SimObject () |
virtual const std::string | name () const |
virtual void | init () |
init() is called after all C++ SimObjects have been created and all ports are connected. More... | |
virtual void | loadState (CheckpointIn &cp) |
loadState() is called on each SimObject when restoring from a checkpoint. More... | |
virtual void | initState () |
initState() is called on each SimObject when not restoring from a checkpoint. More... | |
virtual void | regStats () |
Register statistics for this object. More... | |
virtual void | resetStats () |
Reset statistics associated with this object. More... | |
virtual void | regProbePoints () |
Register probe points for this object. More... | |
virtual void | regProbeListeners () |
Register probe listeners for this object. More... | |
ProbeManager * | getProbeManager () |
Get the probe manager for this object. More... | |
virtual void | startup () |
startup() is the final initialization call before simulation. More... | |
DrainState | drain () override |
Provide a default implementation of the drain interface for objects that don't need draining. More... | |
virtual void | memWriteback () |
Write back dirty buffers to memory using functional writes. More... | |
virtual void | memInvalidate () |
Invalidate the contents of memory buffers. More... | |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. More... | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. More... | |
Public Member Functions inherited from EventManager | |
EventManager (EventManager &em) | |
EventManager (EventManager *em) | |
EventManager (EventQueue *eq) | |
EventQueue * | eventQueue () const |
void | schedule (Event &event, Tick when) |
void | deschedule (Event &event) |
void | reschedule (Event &event, Tick when, bool always=false) |
void | schedule (Event *event, Tick when) |
void | deschedule (Event *event) |
void | reschedule (Event *event, Tick when, bool always=false) |
void | wakeupEventQueue (Tick when=(Tick)-1) |
void | setCurTick (Tick newVal) |
Public Member Functions inherited from Serializable | |
Serializable () | |
virtual | ~Serializable () |
void | serializeSection (CheckpointOut &cp, const char *name) const |
Serialize an object into a new section. More... | |
void | serializeSection (CheckpointOut &cp, const std::string &name) const |
void | unserializeSection (CheckpointIn &cp, const char *name) |
Unserialize an a child object. More... | |
void | unserializeSection (CheckpointIn &cp, const std::string &name) |
Public Member Functions inherited from Drainable | |
DrainState | drainState () const |
Return the current drain state of an object. More... | |
virtual void | notifyFork () |
Notify a child process of a fork. More... | |
Additional Inherited Members | |
Public Types inherited from SimObject | |
typedef SimObjectParams | Params |
Static Public Member Functions inherited from SimObject | |
static void | serializeAll (CheckpointOut &cp) |
Serialize all SimObjects in the system. More... | |
static SimObject * | find (const char *name) |
Find the SimObject with the given name and return a pointer to it. More... | |
Static Public Member Functions inherited from Serializable | |
static const std::string & | currentSection () |
Get the fully-qualified name of the active section. More... | |
static void | serializeAll (const std::string &cpt_dir) |
static void | unserializeGlobals (CheckpointIn &cp) |
Static Public Attributes inherited from Serializable | |
static int | ckptCount = 0 |
static int | ckptMaxCount = 0 |
static int | ckptPrevCount = -1 |
Protected Member Functions inherited from Drainable | |
Drainable () | |
virtual | ~Drainable () |
virtual void | drainResume () |
Resume execution after a successful drain. More... | |
void | signalDrainDone () const |
Signal that an object is drained. More... | |
Protected Attributes inherited from SimObject | |
const SimObjectParams * | _params |
Cached copy of the object parameters. More... | |
Protected Attributes inherited from EventManager | |
EventQueue * | eventq |
A pointer to this object's event queue. More... | |
This is an interface between the disk interface (which will handle the disk data transactions) and the timing model.
The timing model only takes care of calculating the appropriate delay to the disk, and calling back a function when the action has completed. All the other associated actions (such as getting data from A to B) should be taken care of by the disk interface.
Definition at line 55 of file abstract_nvm.hh.
|
inline |
Definition at line 59 of file abstract_nvm.hh.
|
inlinevirtual |
Definition at line 60 of file abstract_nvm.hh.
|
pure virtual |
Initialize Memory.
This function is used to set the memory device dimensions to the dimensions that it controls. For instance, One can imagine that the memory is one disk, e.g. the /data partition of Android, which means that the data handling part will have an image of /data. On the other hand one might want to set up a Raid like configuration, without wanting to create multiple disk images. In that case one can choose to devide the image over multiple memory devices in any way he wants (i.e. higher layers can implement some division based on logical addresses, or intelligent file system interpretation analysis; to effectively devide the disk over the devices; enabling object oriented storage devices). Moving this function outside of the constructor allows you the flexibility to make this decision once the image is loaded.
disk_size | disksize in sectors; value can be obtained from the disk image |
sector_size | size of one sector in bytes; value is defined in disk_image.hh |
Implemented in FlashDevice.
Referenced by UFSHostDevice::UFSSCSIDevice::UFSSCSIDevice().
|
pure virtual |
Access functions Access function to simulate a read/write access to the memory.
Once the action has completed, the Callback event should be called. Putting a NULL pointer as callback is valid syntax, and should result in the simulation of the access, but with no callback to the higher layer. This may be used to occupy the device, such that next actions will be delayed. The read/write function will schedule the incoming requests on a first come first serve basis.
address | The logical address to a location in the Non-volatile memory. |
amount | The amount of data transfered from the NVM in bytes |
event | A pointer to a callback function that will perform the actions taken by the disk controller on successfull completion of the data transfer between the disk and the disk controller. |
Implemented in FlashDevice.
|
pure virtual |
Implemented in FlashDevice.