Skip to content

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

See 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

See 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

See 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

See 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

See simtix::BaseLoadStoreUnit

Type Name
mem::MemoryInterface * dmem_port_ = nullptr

Protected Attributes inherited from simtix::sim::Clocked

See simtix::sim::Clocked

Type Name
std::string name_
TickPri pri_

Protected Static Attributes inherited from simtix::sim::Clocked

See 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

See 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

See 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

virtual bool simtix::CoalescingLoadStoreUnit::Busy () override

Implements simtix::BaseFunctionUnit::Busy


function CoalescingLoadStoreUnit

explicit simtix::CoalescingLoadStoreUnit::CoalescingLoadStoreUnit (
    const std::string & name,
    const ArchParam & p,
    const pipelined::PipelinedSM::Param & pp
) 

function Get

virtual std::optional< InstrPtr > simtix::CoalescingLoadStoreUnit::Get () override

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

virtual bool simtix::CoalescingLoadStoreUnit::Put (
    InstrPtr instr
) override

Implements simtix::BaseFunctionUnit::Put


function ~CoalescingLoadStoreUnit

simtix::CoalescingLoadStoreUnit::~CoalescingLoadStoreUnit () 

Protected Attributes Documentation

variable core_req_buf_

std::vector<CoreRequest> simtix::CoalescingLoadStoreUnit::core_req_buf_;

variable is_write_

bool simtix::CoalescingLoadStoreUnit::is_write_;

variable kCoalescingGranularity

const size_t simtix::CoalescingLoadStoreUnit::kCoalescingGranularity;

variable kMemPorts

const uint32_t simtix::CoalescingLoadStoreUnit::kMemPorts;

variable line_buf_

std::vector<uint8_t> simtix::CoalescingLoadStoreUnit::line_buf_;

variable mem_req_buf_

std::vector<MemRequest> simtix::CoalescingLoadStoreUnit::mem_req_buf_;

variable mem_req_queues_

std::vector<sim::SizedQueue<MemRequest> > simtix::CoalescingLoadStoreUnit::mem_req_queues_;

variable pending_instrs_

sim::SizedQueue<InstrPtr> simtix::CoalescingLoadStoreUnit::pending_instrs_;

variable response_instrs_

sim::SizedQueue<InstrPtr> simtix::CoalescingLoadStoreUnit::response_instrs_;

variable strb_buf_

std::vector<uint8_t> simtix::CoalescingLoadStoreUnit::strb_buf_;

variable wid_

uint32_t simtix::CoalescingLoadStoreUnit::wid_;

Protected Functions Documentation

function AcceptCoreRequests

void simtix::CoalescingLoadStoreUnit::AcceptCoreRequests () 

function Coalesce

void simtix::CoalescingLoadStoreUnit::Coalesce () 

function GetLineBuffer

inline uint8_t * simtix::CoalescingLoadStoreUnit::GetLineBuffer (
    uint32_t bank_id
) 

function GetStrbBuffer

inline uint8_t * simtix::CoalescingLoadStoreUnit::GetStrbBuffer (
    uint32_t bank_id
) 

function HandleReadRequests

void simtix::CoalescingLoadStoreUnit::HandleReadRequests () 

function HandleWriteRequests

void simtix::CoalescingLoadStoreUnit::HandleWriteRequests () 

function HasPendingTasks

Checks if any registered clocked objects have pending tasks at the current tick.

virtual bool simtix::CoalescingLoadStoreUnit::HasPendingTasks () override

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.

virtual void simtix::CoalescingLoadStoreUnit::Tick () override

Call this function to drive all registered tick-driven objects.

Implements simtix::sim::Clocked::Tick


function ToLineAddr

inline uint64_t simtix::CoalescingLoadStoreUnit::ToLineAddr (
    uint64_t addr
) 

function ToLineOffset

inline uint64_t simtix::CoalescingLoadStoreUnit::ToLineOffset (
    uint64_t addr
) 


The documentation for this class was generated from the following file projects/simtix/src/simtix/sm/fu/lsu/coalescing.h