gem5  v22.1.0.0
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
gem5::ruby::PerfectSwitch Class Reference

#include <PerfectSwitch.hh>

Inheritance diagram for gem5::ruby::PerfectSwitch:
gem5::ruby::Consumer

Classes

struct  OutputPort
 

Public Member Functions

 PerfectSwitch (SwitchID sid, Switch *, uint32_t)
 
 ~PerfectSwitch ()
 
std::string name ()
 
void init (SimpleNetwork *)
 
void addInPort (const std::vector< MessageBuffer * > &in)
 
void addOutPort (const std::vector< MessageBuffer * > &out, const NetDest &routing_table_entry, const PortDirection &dst_inport, Tick routing_latency, int link_weight)
 
int getInLinks () const
 
int getOutLinks () const
 
void wakeup ()
 
void storeEventInfo (int info)
 
void clearStats ()
 
void collateStats ()
 
void print (std::ostream &out) const
 
- Public Member Functions inherited from gem5::ruby::Consumer
 Consumer (ClockedObject *em, Event::Priority ev_prio=Event::Default_Pri)
 
virtual ~Consumer ()
 
bool alreadyScheduled (Tick time)
 
ClockedObjectgetObject ()
 
void scheduleEventAbsolute (Tick timeAbs)
 
void scheduleEvent (Cycles timeDelta)
 

Private Member Functions

 PerfectSwitch (const PerfectSwitch &obj)
 
PerfectSwitchoperator= (const PerfectSwitch &obj)
 
void operateVnet (int vnet)
 
void operateMessageBuffer (MessageBuffer *b, int vnet)
 
void updatePriorityGroups (int vnet, MessageBuffer *buf)
 
MessageBufferinBuffer (int in_port, int vnet) const
 

Private Attributes

const SwitchID m_switch_id
 
Switch *const m_switch
 
std::vector< std::vector< MessageBuffer * > > m_in
 
std::vector< OutputPortm_out
 
std::vector< std::vector< MessageBuffer * > > m_in_prio
 
std::vector< std::vector< std::vector< MessageBuffer * > > > m_in_prio_groups
 
uint32_t m_virtual_networks
 
int m_wakeups_wo_switch
 
SimpleNetworkm_network_ptr
 
std::vector< int > m_pending_message_count
 

Detailed Description

Definition at line 69 of file PerfectSwitch.hh.

Constructor & Destructor Documentation

◆ PerfectSwitch() [1/2]

gem5::ruby::PerfectSwitch::PerfectSwitch ( SwitchID  sid,
Switch sw,
uint32_t  virt_nets 
)

Definition at line 62 of file PerfectSwitch.cc.

References m_virtual_networks, and m_wakeups_wo_switch.

◆ ~PerfectSwitch()

gem5::ruby::PerfectSwitch::~PerfectSwitch ( )

Definition at line 137 of file PerfectSwitch.cc.

◆ PerfectSwitch() [2/2]

gem5::ruby::PerfectSwitch::PerfectSwitch ( const PerfectSwitch obj)
private

Member Function Documentation

◆ addInPort()

void gem5::ruby::PerfectSwitch::addInPort ( const std::vector< MessageBuffer * > &  in)

Definition at line 81 of file PerfectSwitch.cc.

References gem5::ArmISA::i, m_in, and updatePriorityGroups().

Referenced by gem5::ruby::Switch::addInPort().

◆ addOutPort()

void gem5::ruby::PerfectSwitch::addOutPort ( const std::vector< MessageBuffer * > &  out,
const NetDest routing_table_entry,
const PortDirection dst_inport,
Tick  routing_latency,
int  link_weight 
)

◆ clearStats()

void gem5::ruby::PerfectSwitch::clearStats ( )

Definition at line 308 of file PerfectSwitch.cc.

Referenced by gem5::ruby::Switch::resetStats().

◆ collateStats()

void gem5::ruby::PerfectSwitch::collateStats ( )

Definition at line 312 of file PerfectSwitch.cc.

Referenced by gem5::ruby::Switch::collateStats().

◆ getInLinks()

int gem5::ruby::PerfectSwitch::getInLinks ( ) const
inline

Definition at line 86 of file PerfectSwitch.hh.

References m_in.

◆ getOutLinks()

int gem5::ruby::PerfectSwitch::getOutLinks ( ) const
inline

Definition at line 87 of file PerfectSwitch.hh.

References m_out.

◆ inBuffer()

MessageBuffer * gem5::ruby::PerfectSwitch::inBuffer ( int  in_port,
int  vnet 
) const
private

Definition at line 142 of file PerfectSwitch.cc.

References m_in.

◆ init()

void gem5::ruby::PerfectSwitch::init ( SimpleNetwork network_ptr)

◆ name()

std::string gem5::ruby::PerfectSwitch::name ( )
inline

Definition at line 75 of file PerfectSwitch.hh.

References gem5::csprintf(), and m_switch_id.

◆ operateMessageBuffer()

void gem5::ruby::PerfectSwitch::operateMessageBuffer ( MessageBuffer b,
int  vnet 
)
private

◆ operateVnet()

void gem5::ruby::PerfectSwitch::operateVnet ( int  vnet)
private

◆ operator=()

PerfectSwitch& gem5::ruby::PerfectSwitch::operator= ( const PerfectSwitch obj)
private

◆ print()

void gem5::ruby::PerfectSwitch::print ( std::ostream &  out) const
virtual

Implements gem5::ruby::Consumer.

Definition at line 318 of file PerfectSwitch.cc.

References m_switch_id.

Referenced by gem5::ruby::operator<<().

◆ storeEventInfo()

void gem5::ruby::PerfectSwitch::storeEventInfo ( int  info)
virtual

Reimplemented from gem5::ruby::Consumer.

Definition at line 302 of file PerfectSwitch.cc.

References m_pending_message_count.

◆ updatePriorityGroups()

void gem5::ruby::PerfectSwitch::updatePriorityGroups ( int  vnet,
MessageBuffer buf 
)
private

Definition at line 97 of file PerfectSwitch.cc.

References gem5::ArmISA::i, gem5::ArmISA::j, m_in_prio, and m_in_prio_groups.

Referenced by addInPort().

◆ wakeup()

void gem5::ruby::PerfectSwitch::wakeup ( )
virtual

Member Data Documentation

◆ m_in

std::vector<std::vector<MessageBuffer*> > gem5::ruby::PerfectSwitch::m_in
private

Definition at line 108 of file PerfectSwitch.hh.

Referenced by addInPort(), getInLinks(), and inBuffer().

◆ m_in_prio

std::vector<std::vector<MessageBuffer*> > gem5::ruby::PerfectSwitch::m_in_prio
private

Definition at line 119 of file PerfectSwitch.hh.

Referenced by updatePriorityGroups().

◆ m_in_prio_groups

std::vector<std::vector<std::vector<MessageBuffer*> > > gem5::ruby::PerfectSwitch::m_in_prio_groups
private

Definition at line 121 of file PerfectSwitch.hh.

Referenced by operateVnet(), and updatePriorityGroups().

◆ m_network_ptr

SimpleNetwork* gem5::ruby::PerfectSwitch::m_network_ptr
private

Definition at line 128 of file PerfectSwitch.hh.

Referenced by init(), and operateMessageBuffer().

◆ m_out

std::vector<OutputPort> gem5::ruby::PerfectSwitch::m_out
private

Definition at line 116 of file PerfectSwitch.hh.

Referenced by addOutPort(), getOutLinks(), and operateMessageBuffer().

◆ m_pending_message_count

std::vector<int> gem5::ruby::PerfectSwitch::m_pending_message_count
private

Definition at line 129 of file PerfectSwitch.hh.

Referenced by init(), operateMessageBuffer(), operateVnet(), and storeEventInfo().

◆ m_switch

Switch* const gem5::ruby::PerfectSwitch::m_switch
private

Definition at line 105 of file PerfectSwitch.hh.

Referenced by addOutPort(), and operateMessageBuffer().

◆ m_switch_id

const SwitchID gem5::ruby::PerfectSwitch::m_switch_id
private

Definition at line 104 of file PerfectSwitch.hh.

Referenced by name(), and print().

◆ m_virtual_networks

uint32_t gem5::ruby::PerfectSwitch::m_virtual_networks
private

Definition at line 125 of file PerfectSwitch.hh.

Referenced by init(), PerfectSwitch(), and wakeup().

◆ m_wakeups_wo_switch

int gem5::ruby::PerfectSwitch::m_wakeups_wo_switch
private

Definition at line 126 of file PerfectSwitch.hh.

Referenced by PerfectSwitch(), and wakeup().


The documentation for this class was generated from the following files:

Generated on Wed Dec 21 2022 10:24:22 for gem5 by doxygen 1.9.1