|
gem5 [DEVELOP-FOR-25.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 gem5::ruby::Consumer::Consumer(), m_switch, m_switch_id, m_virtual_networks, m_wakeups_wo_switch, and gem5::ArmISA::sw.
Referenced by operator=(), and PerfectSwitch().
| gem5::ruby::PerfectSwitch::~PerfectSwitch | ( | ) |
Definition at line 137 of file PerfectSwitch.cc.
|
private |
References PerfectSwitch().
| 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().
| 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.
| void gem5::ruby::PerfectSwitch::clearStats | ( | ) |
Definition at line 309 of file PerfectSwitch.cc.
| void gem5::ruby::PerfectSwitch::collateStats | ( | ) |
Definition at line 313 of file PerfectSwitch.cc.
|
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.
|
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::ruby::MessageBuffer::dequeue(), DPRINTF, gem5::ruby::Message::getDestination(), gem5::ruby::MessageBuffer::getIncomingLink(), gem5::ArmISA::i, gem5::ruby::MessageBuffer::isReady(), gem5::ruby::PerfectSwitch::OutputPort::latency, m_network_ptr, m_out, m_pending_message_count, m_switch, gem5::ruby::MessageBuffer::peekMsgPtr(), 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 |
References gem5::ArmISA::b, and PerfectSwitch().
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 319 of file PerfectSwitch.cc.
References m_switch_id.
Referenced by gem5::ruby::operator<<().
|
virtual |
Reimplemented from gem5::ruby::Consumer.
Definition at line 303 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 278 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(), operateMessageBuffer(), and PerfectSwitch().
|
private |
Definition at line 104 of file PerfectSwitch.hh.
Referenced by name(), PerfectSwitch(), and print().
|
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().