gem5 v24.0.0.0
|
#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 (int sID, RubySystem *rs, NodeID node, Cycles link_latency, const std::vector< int > &vnet_channels, const std::vector< int > &vnet_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::Formula & | getUtilization () const |
const statistics::Vector & | getMsgCount (unsigned int type) const |
int | getLinkBandwidth (int vnet) const |
int | getTotalLinkBandwidth () const |
int | getChannelCnt (int vnet) const |
Cycles | getLatency () const |
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 () |
virtual void | storeEventInfo (int info) |
bool | alreadyScheduled (Tick time) |
ClockedObject * | getObject () |
void | scheduleEventAbsolute (Tick timeAbs) |
void | scheduleEvent (Cycles timeDelta) |
Private Member Functions | |
Throttle (int sID, RubySystem *rs, NodeID node, Cycles link_latency, int endpoint_bandwidth, Switch *em) | |
void | init (NodeID node, Cycles link_latency, int link_bandwidth_multiplier, int endpoint_bandwidth) |
void | operateVnet (int vnet, int channel, int &total_bw_remaining, bool &bw_saturated, bool &output_blocked, 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< std::vector< int > > | m_units_remaining |
const int | m_switch_id |
Switch * | m_switch |
NodeID | m_node |
bool | m_physical_vnets |
std::vector< int > | m_link_bandwidth_multiplier |
std::vector< int > | m_vnet_channels |
Cycles | m_link_latency |
int | m_wakeups_wo_switch |
int | m_endpoint_bandwidth |
RubySystem * | m_ruby_system |
gem5::ruby::Throttle::ThrottleStats | throttleStats |
Definition at line 70 of file Throttle.hh.
|
private |
Definition at line 68 of file Throttle.cc.
References m_endpoint_bandwidth, m_link_latency, m_vnets, and m_wakeups_wo_switch.
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 83 of file Throttle.cc.
References gem5_assert, and m_link_bandwidth_multiplier.
gem5::ruby::Throttle::Throttle | ( | int | sID, |
RubySystem * | rs, | ||
NodeID | node, | ||
Cycles | link_latency, | ||
const std::vector< int > & | vnet_channels, | ||
const std::vector< int > & | vnet_bandwidth_multiplier, | ||
int | endpoint_bandwidth, | ||
Switch * | em ) |
Definition at line 92 of file Throttle.cc.
References gem5_assert, m_link_bandwidth_multiplier, m_physical_vnets, and m_vnet_channels.
|
inline |
Definition at line 83 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 111 of file Throttle.cc.
References gem5_assert, getChannelCnt(), m_in, m_link_bandwidth_multiplier, m_node, m_out, m_physical_vnets, m_switch_id, m_units_remaining, m_vnets, and gem5::ruby::MessageBuffer::setConsumer().
int gem5::ruby::Throttle::getChannelCnt | ( | int | vnet | ) | const |
Definition at line 159 of file Throttle.cc.
References m_physical_vnets, and m_vnet_channels.
Referenced by addLinks(), getTotalLinkBandwidth(), and wakeup().
|
inline |
Definition at line 104 of file Throttle.hh.
References m_link_latency.
int gem5::ruby::Throttle::getLinkBandwidth | ( | int | vnet | ) | const |
Definition at line 138 of file Throttle.cc.
References gem5_assert, m_endpoint_bandwidth, m_link_bandwidth_multiplier, and m_physical_vnets.
Referenced by getTotalLinkBandwidth(), operateVnet(), and print().
|
inline |
Definition at line 95 of file Throttle.hh.
References gem5::ruby::Throttle::ThrottleStats::msg_counts, throttleStats, and gem5::X86ISA::type.
int gem5::ruby::Throttle::getTotalLinkBandwidth | ( | ) | const |
Definition at line 148 of file Throttle.cc.
References getChannelCnt(), getLinkBandwidth(), gem5::ArmISA::i, m_physical_vnets, m_vnets, and gem5::RiscvISA::sum.
|
inline |
Definition at line 93 of file Throttle.hh.
References gem5::ruby::Throttle::ThrottleStats::link_utilization, and throttleStats.
|
private |
|
inline |
Definition at line 85 of file Throttle.hh.
References gem5::csprintf(), and m_switch_id.
|
private |
Definition at line 165 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(), gem5_assert, gem5::ruby::Message::getLastEnqueueTime(), getLinkBandwidth(), gem5::ruby::Message::getMessageSize(), gem5::ruby::MessageBuffer::isReady(), m_link_latency, m_node, m_physical_vnets, m_ruby_system, m_switch, m_units_remaining, gem5::ruby::Network::MessageSizeType_to_int(), gem5::ruby::network_message_to_size(), gem5::ruby::MessageBuffer::peekMsgPtr(), throttleStats, gem5::ruby::Throttle::ThrottleStats::total_data_msg_bytes, gem5::ruby::Throttle::ThrottleStats::total_msg_bytes, gem5::ruby::Throttle::ThrottleStats::total_msg_count, and gem5::ruby::Throttle::ThrottleStats::total_msg_wait_time.
Referenced by wakeup().
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 304 of file Throttle.cc.
References gem5::ccprintf(), getLinkBandwidth(), getTotalLinkBandwidth(), gem5::ArmISA::i, m_node, m_physical_vnets, and m_vnets.
Referenced by gem5::ruby::operator<<().
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 243 of file Throttle.cc.
References gem5::ruby::Throttle::ThrottleStats::acc_link_utilization, DPRINTF, getChannelCnt(), getTotalLinkBandwidth(), m_in, m_out, m_vnets, m_wakeups_wo_switch, operateVnet(), gem5::ruby::PRIORITY_SWITCH_LIMIT, gem5::ruby::Consumer::scheduleEvent(), throttleStats, gem5::ruby::Throttle::ThrottleStats::total_bw_sat_cy, and gem5::ruby::Throttle::ThrottleStats::total_stall_cy.
|
private |
Definition at line 133 of file Throttle.hh.
Referenced by getLinkBandwidth(), and Throttle().
|
private |
Definition at line 119 of file Throttle.hh.
Referenced by addLinks(), and wakeup().
|
private |
Definition at line 129 of file Throttle.hh.
Referenced by addLinks(), getLinkBandwidth(), Throttle(), and Throttle().
|
private |
Definition at line 131 of file Throttle.hh.
Referenced by getLatency(), operateVnet(), and Throttle().
|
private |
Definition at line 126 of file Throttle.hh.
Referenced by addLinks(), operateVnet(), and print().
|
private |
Definition at line 120 of file Throttle.hh.
Referenced by addLinks(), and wakeup().
|
private |
Definition at line 128 of file Throttle.hh.
Referenced by addLinks(), getChannelCnt(), getLinkBandwidth(), getTotalLinkBandwidth(), operateVnet(), print(), and Throttle().
|
private |
Definition at line 134 of file Throttle.hh.
Referenced by operateVnet().
|
private |
Definition at line 125 of file Throttle.hh.
Referenced by operateVnet().
|
private |
Definition at line 124 of file Throttle.hh.
Referenced by addLinks(), and name().
|
private |
Definition at line 122 of file Throttle.hh.
Referenced by addLinks(), and operateVnet().
|
private |
Definition at line 130 of file Throttle.hh.
Referenced by getChannelCnt(), and Throttle().
|
private |
Definition at line 121 of file Throttle.hh.
Referenced by addLinks(), getTotalLinkBandwidth(), print(), Throttle(), and wakeup().
|
private |
Definition at line 132 of file Throttle.hh.
Referenced by Throttle(), and wakeup().
|
private |
Referenced by getMsgCount(), getUtilization(), operateVnet(), and wakeup().