gem5 v24.0.0.0
|
#include <PerfectSwitch.hh>
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) |
ClockedObject * | getObject () |
void | scheduleEventAbsolute (Tick timeAbs) |
void | scheduleEvent (Cycles timeDelta) |
Private Member Functions | |
PerfectSwitch (const PerfectSwitch &obj) | |
PerfectSwitch & | operator= (const PerfectSwitch &obj) |
void | operateVnet (int vnet) |
void | operateMessageBuffer (MessageBuffer *b, int vnet) |
void | updatePriorityGroups (int vnet, MessageBuffer *buf) |
MessageBuffer * | inBuffer (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< OutputPort > | m_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 |
SimpleNetwork * | m_network_ptr |
std::vector< int > | m_pending_message_count |
Definition at line 69 of file PerfectSwitch.hh.
Definition at line 62 of file PerfectSwitch.cc.
References m_virtual_networks, and m_wakeups_wo_switch.
gem5::ruby::PerfectSwitch::~PerfectSwitch | ( | ) |
Definition at line 137 of file PerfectSwitch.cc.
|
private |
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().
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 ) |
Definition at line 122 of file PerfectSwitch.cc.
References gem5::ruby::BaseRoutingUnit::addOutPort(), gem5::ruby::Switch::getRoutingUnit(), m_out, and m_switch.
Referenced by gem5::ruby::Switch::addOutPort().
void gem5::ruby::PerfectSwitch::clearStats | ( | ) |
Definition at line 308 of file PerfectSwitch.cc.
Referenced by gem5::ruby::Switch::resetStats().
void gem5::ruby::PerfectSwitch::collateStats | ( | ) |
Definition at line 312 of file PerfectSwitch.cc.
Referenced by gem5::ruby::Switch::collateStats().
|
inline |
Definition at line 86 of file PerfectSwitch.hh.
References m_in.
|
inline |
Definition at line 87 of file PerfectSwitch.hh.
References m_out.
|
private |
Definition at line 142 of file PerfectSwitch.cc.
References m_in.
void gem5::ruby::PerfectSwitch::init | ( | SimpleNetwork * | network_ptr | ) |
Definition at line 71 of file PerfectSwitch.cc.
References gem5::ArmISA::i, m_network_ptr, m_pending_message_count, and m_virtual_networks.
Referenced by gem5::ruby::Switch::init().
|
inline |
Definition at line 75 of file PerfectSwitch.hh.
References gem5::csprintf(), and m_switch_id.
|
private |
Definition at line 186 of file PerfectSwitch.cc.
References gem5::ruby::PerfectSwitch::OutputPort::buffers, gem5::Clocked::clockEdge(), gem5::ruby::MessageBuffer::dequeue(), DPRINTF, gem5::ruby::Message::getDestination(), gem5::ruby::MessageBuffer::getIncomingLink(), gem5::ruby::Switch::getRoutingUnit(), gem5::ArmISA::i, gem5::ruby::MessageBuffer::isReady(), gem5::ruby::SimpleNetwork::isVNetOrdered(), gem5::ruby::PerfectSwitch::OutputPort::latency, m_network_ptr, m_out, m_pending_message_count, m_switch, gem5::ruby::MessageBuffer::peekMsgPtr(), gem5::ruby::BaseRoutingUnit::route(), and gem5::ruby::Consumer::scheduleEvent().
Referenced by operateVnet().
|
private |
Definition at line 153 of file PerfectSwitch.cc.
References DPRINTF, gem5::ArmISA::i, m_in_prio_groups, m_pending_message_count, gem5::MaxTick, operateMessageBuffer(), and gem5::ruby::MessageBuffer::readyTime().
Referenced by wakeup().
|
private |
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 318 of file PerfectSwitch.cc.
References m_switch_id.
Referenced by gem5::ruby::operator<<().
|
virtual |
Reimplemented from gem5::ruby::Consumer.
Definition at line 302 of file PerfectSwitch.cc.
References m_pending_message_count.
|
private |
Definition at line 97 of file PerfectSwitch.cc.
References gem5::ArmISA::i, m_in_prio, m_in_prio_groups, and gem5::ruby::MessageBuffer::routingPriority().
Referenced by addInPort().
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 277 of file PerfectSwitch.cc.
References m_virtual_networks, m_wakeups_wo_switch, operateVnet(), and gem5::ruby::PRIORITY_SWITCH_LIMIT.
|
private |
Definition at line 108 of file PerfectSwitch.hh.
Referenced by addInPort(), getInLinks(), and inBuffer().
|
private |
Definition at line 119 of file PerfectSwitch.hh.
Referenced by updatePriorityGroups().
|
private |
Definition at line 121 of file PerfectSwitch.hh.
Referenced by operateVnet(), and updatePriorityGroups().
|
private |
Definition at line 128 of file PerfectSwitch.hh.
Referenced by init(), and operateMessageBuffer().
|
private |
Definition at line 116 of file PerfectSwitch.hh.
Referenced by addOutPort(), getOutLinks(), and operateMessageBuffer().
|
private |
Definition at line 129 of file PerfectSwitch.hh.
Referenced by init(), operateMessageBuffer(), operateVnet(), and storeEventInfo().
|
private |
Definition at line 105 of file PerfectSwitch.hh.
Referenced by addOutPort(), and operateMessageBuffer().
|
private |
Definition at line 104 of file PerfectSwitch.hh.
|
private |
Definition at line 125 of file PerfectSwitch.hh.
Referenced by init(), PerfectSwitch(), and wakeup().
|
private |
Definition at line 126 of file PerfectSwitch.hh.
Referenced by PerfectSwitch(), and wakeup().