|
gem5
v21.2.1.1
|
#include <PerfectSwitch.hh>
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) |
| 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) | |
| 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 incoming, int vnet) |
Private Attributes | |
| const SwitchID | m_switch_id |
| Switch *const | m_switch |
| std::vector< std::vector< MessageBuffer * > > | m_in |
| std::vector< std::vector< MessageBuffer * > > | m_out |
| std::vector< NetDest > | m_routing_table |
| std::vector< LinkOrder > | m_link_order |
| uint32_t | m_virtual_networks |
| int | m_round_robin_start |
| int | m_wakeups_wo_switch |
| SimpleNetwork * | m_network_ptr |
| std::vector< int > | m_pending_message_count |
Definition at line 65 of file PerfectSwitch.hh.
Definition at line 57 of file PerfectSwitch.cc.
References m_round_robin_start, m_virtual_networks, and m_wakeups_wo_switch.
| gem5::ruby::PerfectSwitch::~PerfectSwitch | ( | ) |
Definition at line 105 of file PerfectSwitch.cc.
|
private |
| void gem5::ruby::PerfectSwitch::addInPort | ( | const std::vector< MessageBuffer * > & | in | ) |
Definition at line 76 of file PerfectSwitch.cc.
References gem5::ArmISA::i, and m_in.
Referenced by gem5::ruby::Switch::addInPort().
| void gem5::ruby::PerfectSwitch::addOutPort | ( | const std::vector< MessageBuffer * > & | out, |
| const NetDest & | routing_table_entry | ||
| ) |
Definition at line 91 of file PerfectSwitch.cc.
References gem5::MipsISA::l, m_link_order, m_out, and m_routing_table.
Referenced by gem5::ruby::Switch::addOutPort().
| void gem5::ruby::PerfectSwitch::clearStats | ( | ) |
Definition at line 321 of file PerfectSwitch.cc.
Referenced by gem5::ruby::Switch::resetStats().
| void gem5::ruby::PerfectSwitch::collateStats | ( | ) |
Definition at line 325 of file PerfectSwitch.cc.
Referenced by gem5::ruby::Switch::collateStats().
|
inline |
Definition at line 79 of file PerfectSwitch.hh.
References m_in.
|
inline |
Definition at line 80 of file PerfectSwitch.hh.
References m_out.
| void gem5::ruby::PerfectSwitch::init | ( | SimpleNetwork * | network_ptr | ) |
Definition at line 66 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 71 of file PerfectSwitch.hh.
References gem5::csprintf(), and m_switch_id.
|
private |
Definition at line 144 of file PerfectSwitch.cc.
References gem5::ruby::NetDest::AND(), gem5::Clocked::clockEdge(), gem5::ruby::NetDest::count(), gem5::Clocked::cyclesToTicks(), gem5::ruby::MessageBuffer::dequeue(), DPRINTF, gem5::ruby::SimpleNetwork::getAdaptiveRouting(), gem5::ruby::Message::getDestination(), gem5::ArmISA::i, gem5::ruby::NetDest::intersectionIsNotEmpty(), gem5::ruby::MessageBuffer::isReady(), gem5::ruby::SimpleNetwork::isVNetOrdered(), m_link_order, m_network_ptr, m_out, m_pending_message_count, m_routing_table, m_switch, m_virtual_networks, gem5::ruby::MessageBuffer::peekMsgPtr(), gem5::Random::random(), gem5::random_mt, gem5::ruby::NetDest::removeNetDest(), gem5::ruby::Consumer::scheduleEvent(), and gem5::ArmISA::v.
Referenced by operateVnet().
|
private |
Definition at line 110 of file PerfectSwitch.cc.
References m_in, m_pending_message_count, m_round_robin_start, and operateMessageBuffer().
Referenced by wakeup().
|
private |
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 331 of file PerfectSwitch.cc.
References m_switch_id.
Referenced by gem5::ruby::operator<<().
|
virtual |
Reimplemented from gem5::ruby::Consumer.
Definition at line 315 of file PerfectSwitch.cc.
References m_pending_message_count.
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 290 of file PerfectSwitch.cc.
References m_virtual_networks, m_wakeups_wo_switch, operateVnet(), and gem5::ruby::PRIORITY_SWITCH_LIMIT.
|
private |
Definition at line 101 of file PerfectSwitch.hh.
Referenced by addInPort(), getInLinks(), and operateVnet().
|
private |
Definition at line 105 of file PerfectSwitch.hh.
Referenced by addOutPort(), and operateMessageBuffer().
|
private |
Definition at line 111 of file PerfectSwitch.hh.
Referenced by init(), and operateMessageBuffer().
|
private |
Definition at line 102 of file PerfectSwitch.hh.
Referenced by addOutPort(), getOutLinks(), and operateMessageBuffer().
|
private |
Definition at line 112 of file PerfectSwitch.hh.
Referenced by init(), operateMessageBuffer(), operateVnet(), and storeEventInfo().
|
private |
Definition at line 108 of file PerfectSwitch.hh.
Referenced by operateVnet(), and PerfectSwitch().
|
private |
Definition at line 104 of file PerfectSwitch.hh.
Referenced by addOutPort(), and operateMessageBuffer().
|
private |
Definition at line 98 of file PerfectSwitch.hh.
Referenced by operateMessageBuffer().
|
private |
Definition at line 97 of file PerfectSwitch.hh.
|
private |
Definition at line 107 of file PerfectSwitch.hh.
Referenced by init(), operateMessageBuffer(), PerfectSwitch(), and wakeup().
|
private |
Definition at line 109 of file PerfectSwitch.hh.
Referenced by PerfectSwitch(), and wakeup().