|
gem5
v21.1.0.2
|
#include <Throttle.hh>
Classes | |
| struct | ThrottleStats |
Public Member Functions | |
| Throttle (int sID, RubySystem *rs, NodeID node, Cycles link_latency, int link_bandwidth_multiplier, int endpoint_bandwidth, Switch *em) | |
| ~Throttle () | |
| std::string | name () |
| void | addLinks (const std::vector< MessageBuffer * > &in_vec, const std::vector< MessageBuffer * > &out_vec) |
| void | wakeup () |
| const statistics::Scalar & | getUtilization () const |
| const statistics::Vector & | getMsgCount (unsigned int type) const |
| int | getLinkBandwidth () const |
| Cycles | getLatency () const |
| void | clearStats () |
| void | collateStats () |
| void | regStats () |
| void | print (std::ostream &out) const |
Public Member Functions inherited from gem5::ruby::Consumer | |
| Consumer (ClockedObject *_em) | |
| virtual | ~Consumer () |
| virtual void | storeEventInfo (int info) |
| bool | alreadyScheduled (Tick time) |
| ClockedObject * | getObject () |
| void | scheduleEventAbsolute (Tick timeAbs) |
| void | scheduleEvent (Cycles timeDelta) |
Private Member Functions | |
| void | init (NodeID node, Cycles link_latency, int link_bandwidth_multiplier, int endpoint_bandwidth) |
| void | operateVnet (int vnet, int &bw_remainin, bool &schedule_wakeup, MessageBuffer *in, MessageBuffer *out) |
| Throttle (const Throttle &obj) | |
| Throttle & | operator= (const Throttle &obj) |
Private Attributes | |
| std::vector< MessageBuffer * > | m_in |
| std::vector< MessageBuffer * > | m_out |
| unsigned int | m_vnets |
| std::vector< int > | m_units_remaining |
| const int | m_switch_id |
| Switch * | m_switch |
| NodeID | m_node |
| int | m_link_bandwidth_multiplier |
| Cycles | m_link_latency |
| int | m_wakeups_wo_switch |
| int | m_endpoint_bandwidth |
| RubySystem * | m_ruby_system |
| double | m_link_utilization_proxy |
| gem5::ruby::Throttle::ThrottleStats | throttleStats |
Definition at line 58 of file Throttle.hh.
| gem5::ruby::Throttle::Throttle | ( | int | sID, |
| RubySystem * | rs, | ||
| NodeID | node, | ||
| Cycles | link_latency, | ||
| int | link_bandwidth_multiplier, | ||
| int | endpoint_bandwidth, | ||
| Switch * | em | ||
| ) |
Definition at line 55 of file Throttle.cc.
References m_endpoint_bandwidth, m_link_bandwidth_multiplier, m_link_latency, m_link_utilization_proxy, m_vnets, and m_wakeups_wo_switch.
|
inline |
Definition at line 64 of file Throttle.hh.
|
private |
| void gem5::ruby::Throttle::addLinks | ( | const std::vector< MessageBuffer * > & | in_vec, |
| const std::vector< MessageBuffer * > & | out_vec | ||
| ) |
Definition at line 76 of file Throttle.cc.
References m_in, m_node, m_out, m_switch_id, m_units_remaining, m_vnets, gem5::ruby::MessageBuffer::setConsumer(), and sc_dt::to_string().
| void gem5::ruby::Throttle::clearStats | ( | ) |
Definition at line 236 of file Throttle.cc.
References m_link_utilization_proxy.
| void gem5::ruby::Throttle::collateStats | ( | ) |
Definition at line 242 of file Throttle.cc.
References gem5::Clocked::curCycle(), gem5::ruby::RubySystem::getStartCycle(), gem5::ruby::Throttle::ThrottleStats::m_link_utilization, m_link_utilization_proxy, m_ruby_system, and throttleStats.
|
inline |
Definition at line 82 of file Throttle.hh.
References m_link_latency.
|
inline |
Definition at line 79 of file Throttle.hh.
References m_endpoint_bandwidth, and m_link_bandwidth_multiplier.
Referenced by operateVnet(), print(), and wakeup().
|
inline |
Definition at line 76 of file Throttle.hh.
References gem5::ruby::Throttle::ThrottleStats::m_msg_counts, throttleStats, and gem5::X86ISA::type.
|
inline |
Definition at line 74 of file Throttle.hh.
References gem5::ruby::Throttle::ThrottleStats::m_link_utilization, and throttleStats.
|
private |
Referenced by regStats().
|
inline |
Definition at line 66 of file Throttle.hh.
References gem5::csprintf(), and m_switch_id.
|
private |
Definition at line 98 of file Throttle.cc.
References gem5::ruby::MessageBuffer::areNSlotsAvailable(), gem5::Clocked::clockEdge(), gem5::Clocked::curCycle(), gem5::Clocked::cyclesToTicks(), gem5::ruby::MessageBuffer::dequeue(), DPRINTF, gem5::ruby::MessageBuffer::enqueue(), getLinkBandwidth(), gem5::ruby::Message::getMessageSize(), gem5::ruby::MessageBuffer::isReady(), m_link_latency, m_node, m_ruby_system, m_switch, m_units_remaining, gem5::ruby::network_message_to_size(), gem5::ruby::MessageBuffer::peekMsgPtr(), and throttleStats.
Referenced by wakeup().
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 252 of file Throttle.cc.
References gem5::ccprintf(), getLinkBandwidth(), and m_node.
Referenced by gem5::ruby::operator<<().
| void gem5::ruby::Throttle::regStats | ( | ) |
Definition at line 210 of file Throttle.cc.
References gem5::statistics::constant(), gem5::csprintf(), gem5::ruby::Network::getNumberOfVirtualNetworks(), init(), gem5::ruby::Throttle::ThrottleStats::m_msg_bytes, gem5::ruby::Throttle::ThrottleStats::m_msg_counts, gem5::ruby::Network::MessageSizeType_to_int(), gem5::statistics::nozero, throttleStats, and gem5::X86ISA::type.
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 154 of file Throttle.cc.
References DPRINTF, getLinkBandwidth(), m_in, m_link_utilization_proxy, m_out, m_vnets, m_wakeups_wo_switch, operateVnet(), gem5::ruby::PRIORITY_SWITCH_LIMIT, and gem5::ruby::Consumer::scheduleEvent().
|
private |
Definition at line 111 of file Throttle.hh.
Referenced by getLinkBandwidth(), and Throttle().
|
private |
Definition at line 99 of file Throttle.hh.
Referenced by addLinks(), and wakeup().
|
private |
Definition at line 108 of file Throttle.hh.
Referenced by getLinkBandwidth(), and Throttle().
|
private |
Definition at line 109 of file Throttle.hh.
Referenced by getLatency(), operateVnet(), and Throttle().
|
private |
Definition at line 114 of file Throttle.hh.
Referenced by clearStats(), collateStats(), Throttle(), and wakeup().
|
private |
Definition at line 106 of file Throttle.hh.
Referenced by addLinks(), operateVnet(), and print().
|
private |
Definition at line 100 of file Throttle.hh.
Referenced by addLinks(), and wakeup().
|
private |
Definition at line 112 of file Throttle.hh.
Referenced by collateStats(), and operateVnet().
|
private |
Definition at line 105 of file Throttle.hh.
Referenced by operateVnet().
|
private |
Definition at line 104 of file Throttle.hh.
Referenced by addLinks(), and name().
|
private |
Definition at line 102 of file Throttle.hh.
Referenced by addLinks(), and operateVnet().
|
private |
Definition at line 101 of file Throttle.hh.
Referenced by addLinks(), Throttle(), and wakeup().
|
private |
Definition at line 110 of file Throttle.hh.
Referenced by Throttle(), and wakeup().
|
private |
Referenced by collateStats(), getMsgCount(), getUtilization(), operateVnet(), and regStats().