Class simtix::CoalescingLoadStoreUnit
ClassList > simtix > CoalescingLoadStoreUnit
Inherits the following classes: simtix::BaseLoadStoreUnit, simtix::sim::Clocked
Classes
Type | Name |
---|---|
struct | CoreRequest |
struct | MemRequest |
Public Types inherited from simtix::BaseLoadStoreUnit
Type | Name |
---|---|
typedef mem::MemoryInterface::OnResp | OnResp |
typedef mem::MemoryInterface::Payload | Payload |
typedef mem::MemoryInterface::RespStatus | RespStatus |
Public Functions
Type | Name |
---|---|
virtual bool | Busy () override |
CoalescingLoadStoreUnit (const std::string & name, const ArchParam & p, const pipelined::PipelinedSM::Param & pp) |
|
virtual std::optional< InstrPtr > | Get () override |
virtual void | PushReadRequest (uint32_t tid, Payload payload, OnResp on_resp) override |
virtual void | PushWriteRequest (uint32_t tid, Payload payload, OnResp on_resp) override |
virtual bool | Put (InstrPtr instr) override |
~CoalescingLoadStoreUnit () |
Public Functions inherited from simtix::BaseLoadStoreUnit
Type | Name |
---|---|
virtual void | AttachDMem (mem::MemoryInterface * dmem_port) |
BaseLoadStoreUnit (const std::string & name, const ArchParam & p=kDefaultArchParam) |
|
virtual void | PushReadRequest (uint32_t tid, Payload payload, OnResp on_resp) = 0 |
virtual void | PushWriteRequest (uint32_t tid, Payload payload, OnResp on_resp) = 0 |
Public Functions inherited from simtix::BaseFunctionUnit
Type | Name |
---|---|
virtual bool | Busy () = 0 |
virtual std::optional< InstrPtr > | Get () = 0 |
virtual bool | Put (InstrPtr instr) = 0 |
virtual | ~BaseFunctionUnit () = default |
Public Functions inherited from simtix::sim::Clocked
Type | Name |
---|---|
Clocked (const std::string & name, TickPri pri=kDefaultPri) Constructor for clocled. |
|
const std::string & | name () const Get the name of the clocked object. |
virtual | ~Clocked () |
Protected Attributes
Type | Name |
---|---|
std::vector< CoreRequest > | core_req_buf_ |
bool | is_write_ |
const size_t | kCoalescingGranularity |
const uint32_t | kMemPorts |
std::vector< uint8_t > | line_buf_ |
std::vector< MemRequest > | mem_req_buf_ |
std::vector< sim::SizedQueue< MemRequest > > | mem_req_queues_ |
sim::SizedQueue< InstrPtr > | pending_instrs_ |
sim::SizedQueue< InstrPtr > | response_instrs_ |
std::vector< uint8_t > | strb_buf_ |
uint32_t | wid_ |
Protected Attributes inherited from simtix::BaseLoadStoreUnit
Type | Name |
---|---|
mem::MemoryInterface * | dmem_port_ = nullptr |
Protected Attributes inherited from simtix::sim::Clocked
Type | Name |
---|---|
std::string | name_ |
TickPri | pri_ |
Protected Static Attributes inherited from simtix::sim::Clocked
Type | Name |
---|---|
bool | busy_ = true |
std::map< TickPri, std::vector< Clocked * > > | clocked_objs_map_ |
uint64_t | cur_tick_ = 0 |
Protected Functions
Type | Name |
---|---|
void | AcceptCoreRequests () |
void | Coalesce () |
uint8_t * | GetLineBuffer (uint32_t bank_id) |
uint8_t * | GetStrbBuffer (uint32_t bank_id) |
void | HandleReadRequests () |
void | HandleWriteRequests () |
virtual bool | HasPendingTasks () override Checks if any registered clocked objects have pending tasks at the current tick. |
void | PushCoreRequest (uint32_t tid, Payload payload, OnResp on_resp, bool is_write) |
virtual void | Tick () override Global tick function that advances the simulation by one cycle. |
uint64_t | ToLineAddr (uint64_t addr) |
uint64_t | ToLineOffset (uint64_t addr) |
Protected Functions inherited from simtix::sim::Clocked
Type | Name |
---|---|
virtual bool | HasPendingTasks () = 0 Checks if any registered clocked objects have pending tasks at the current tick. |
virtual void | Tick () = 0 Global tick function that advances the simulation by one cycle. |
Protected Static Functions inherited from simtix::sim::Clocked
Type | Name |
---|---|
void | Register (Clocked * c) Register a clocked object to participate in tick-driven simulation. |
void | Unregister (Clocked * c) Unregister a clocked object from tick-driven simulation. |
Public Functions Documentation
function Busy
Implements simtix::BaseFunctionUnit::Busy
function CoalescingLoadStoreUnit
explicit simtix::CoalescingLoadStoreUnit::CoalescingLoadStoreUnit (
const std::string & name,
const ArchParam & p,
const pipelined::PipelinedSM::Param & pp
)
function Get
Implements simtix::BaseFunctionUnit::Get
function PushReadRequest
virtual void simtix::CoalescingLoadStoreUnit::PushReadRequest (
uint32_t tid,
Payload payload,
OnResp on_resp
) override
Implements simtix::BaseLoadStoreUnit::PushReadRequest
function PushWriteRequest
virtual void simtix::CoalescingLoadStoreUnit::PushWriteRequest (
uint32_t tid,
Payload payload,
OnResp on_resp
) override
Implements simtix::BaseLoadStoreUnit::PushWriteRequest
function Put
Implements simtix::BaseFunctionUnit::Put
function ~CoalescingLoadStoreUnit
Protected Attributes Documentation
variable core_req_buf_
variable is_write_
variable kCoalescingGranularity
variable kMemPorts
variable line_buf_
variable mem_req_buf_
variable mem_req_queues_
variable pending_instrs_
variable response_instrs_
variable strb_buf_
variable wid_
Protected Functions Documentation
function AcceptCoreRequests
function Coalesce
function GetLineBuffer
function GetStrbBuffer
function HandleReadRequests
function HandleWriteRequests
function HasPendingTasks
Checks if any registered clocked objects have pending tasks at the current tick.
Returns:
True if there are pending tasks, false otherwise.
Implements simtix::sim::Clocked::HasPendingTasks
function PushCoreRequest
void simtix::CoalescingLoadStoreUnit::PushCoreRequest (
uint32_t tid,
Payload payload,
OnResp on_resp,
bool is_write
)
function Tick
Global tick function that advances the simulation by one cycle.
Call this function to drive all registered tick-driven objects.
Implements simtix::sim::Clocked::Tick
function ToLineAddr
function ToLineOffset
The documentation for this class was generated from the following file projects/simtix/src/simtix/sm/fu/lsu/coalescing.h