SST/macro
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
sstmac::hw::packet_flow_NtoM_queue Class Reference

#include <packet_flow_crossbar.h>

Inheritance diagram for sstmac::hw::packet_flow_NtoM_queue:
Inheritance graph
Collaboration diagram for sstmac::hw::packet_flow_NtoM_queue:
Collaboration graph

Classes

struct  request
 

Public Member Functions

virtual ~packet_flow_NtoM_queue ()
 
 packet_flow_NtoM_queue (timestamp send_lat, timestamp credit_lat, double out_bw, int num_vc, int buffer_size, packet_flow_bandwidth_arbitrator *arb)
 
 packet_flow_NtoM_queue (timestamp send_lat, timestamp credit_lat, int num_vc, int buffer_size)
 
int thread_id () const
 
virtual void do_handle_payload (packet_flow_payload *pkt)
 
void set_input (int my_inport, int src_outport, event_handler *input)
 
void set_output (int my_outport, int dst_inport, event_handler *output)
 
virtual void handle_credit (packet_flow_credit *msg)
 
virtual void start_message (message *msg)
 
void init_credits (int port, int num_credits)
 
int num_initial_credits () const
 
int buffer_size () const
 
void configure_mod_ports (int mod)
 
void configure_div_ports (int div, int max_port)
 
void configure_offset_ports (int offset, int max_port)
 
void configure_basic_ports (int num_ports)
 
int local_port (int port) const
 
int local_slot (int port, int vc) const
 
packet_flow_bandwidth_arbitrator *& port_arbitrator (int port)
 
void deadlock_check ()
 
void deadlock_check (event *ev)
 
- Public Member Functions inherited from sstmac::hw::packet_flow_sender
virtual ~packet_flow_sender ()
 
void set_acker (event_handler *acker)
 
void handle_payload (packet_flow_payload *pkt)
 
void set_event_location (node_id nid)
 
void set_event_location (switch_id sid)
 
void set_stat_collector (packet_sent_stats *c)
 
std::string to_string () const
 
virtual std::string packet_flow_name () const =0
 
void set_update_vc (bool flag)
 
- Public Member Functions inherited from sstmac::hw::packet_flow_handler
 packet_flow_handler ()
 
virtual ~packet_flow_handler ()
 
virtual void handle (event *ev)
 
int thread_id () const
 
- Public Member Functions inherited from sstmac::event_subscheduler
 event_subscheduler ()
 
timestamp now () const
 get the current time More...
 
void schedule (timestamp t, event_handler *handler, event *ev)
 Add an event to the event queue, where msg will get delivered to handler at time t. More...
 
void schedule (timestamp t, event_queue_entry *ev)
 
void schedule_now (event_queue_entry *ev)
 
void schedule_now (event_handler *handler, event *ev)
 
void schedule_delay (timestamp delay, event_handler *handler, event *ev)
 
void schedule_delay (timestamp delay, event_queue_entry *ev)
 
void send_self_event (timestamp arrival, event *ev)
 
void send_delayed_self_event (timestamp delay, event *ev)
 
void send_now_self_event (event *ev)
 
void send_self_event_queue (timestamp arrival, event_queue_entry *ev)
 
void send_delayed_self_event_queue (timestamp delay, event_queue_entry *ev)
 
void send_now_self_event_queue (event_queue_entry *ev)
 
virtual void set_event_parent (event_scheduler *m)
 Set the eventmanager for this scheduler. More...
 
event_schedulerparent () const
 
- Public Member Functions inherited from sstmac::event_handler
virtual ~event_handler ()
 
event_loc_id event_location () const
 
virtual bool ipc_handler () const
 Whether an event handler is a "fake" handler that represents logical process boundary. More...
 
int thread_id () const
 

Protected Types

typedef std::list< requestbuffer_request_list
 
typedef spkt_unordered_map< int, buffer_request_listxbar_request_map
 
typedef spkt_unordered_map< int, packet_flow_inputinput_map
 
typedef std::vector< packet_flow_outputoutput_map
 
typedef std::vector< int > credit_map
 
typedef std::vector< payload_queuequeue_map
 

Protected Member Functions

void handle_routed_payload (packet_flow_payload *pkt)
 
void send_payload (packet_flow_payload *pkt)
 
void build_blocked_messages ()
 
- Protected Member Functions inherited from sstmac::hw::packet_flow_sender
 packet_flow_sender (const timestamp &send_lat, const timestamp &credit_lat)
 
 packet_flow_sender ()
 
void send_credit (const packet_flow_input &src, packet_flow_payload *payload, timestamp packet_tail_leaves)
 
void send (packet_flow_bandwidth_arbitrator *arb, packet_flow_payload *pkt, const packet_flow_input &src, const packet_flow_output &dest)
 
- Protected Member Functions inherited from sstmac::event_handler
 event_handler ()
 
void init_loc_id (event_loc_id id)
 
void init_thread_id (int id)
 

Protected Attributes

packet_flow_bandwidth_arbitratorarb_tmpl_
 
std::vector< packet_flow_bandwidth_arbitrator * > port_arbitrators_
 
input_map inputs_
 
output_map outputs_
 
credit_map credits_
 
queue_map queues_
 
int num_vc_
 
int buffer_size_
 
int port_offset_
 
int port_div_
 
int port_mod_
 
double out_bw_
 
std::map< int, std::set< int > > deadlocked_channels_
 
std::map< int, std::map< int, std::list< packet_flow_payload * > > > blocked_messages_
 
- Protected Attributes inherited from sstmac::hw::packet_flow_sender
packet_sent_statsstat_collector_
 
event_handleracker_
 
timestamp send_lat_
 
timestamp credit_lat_
 
bool update_vc_
 
- Protected Attributes inherited from sstmac::event_subscheduler
event_schedulerparent_
 

Private Member Functions

int & credit (int port, int vc)
 
void resize (int num_ports)
 
payload_queuequeue (int port, int vc)
 
std::string input_name (packet_flow_payload *pkt)
 
std::string output_name (packet_flow_payload *pkt)
 
event_handleroutput_handler (packet_flow_payload *pkt)
 

Additional Inherited Members

- Static Public Attributes inherited from sstmac::event_handler
static const int null_lpid = -1
 
static const int null_threadid = -1
 

Detailed Description

Definition at line 13 of file packet_flow_crossbar.h.

Member Typedef Documentation

Definition at line 111 of file packet_flow_crossbar.h.

typedef std::vector<int> sstmac::hw::packet_flow_NtoM_queue::credit_map
protected

Definition at line 122 of file packet_flow_crossbar.h.

typedef spkt_unordered_map<int, packet_flow_input> sstmac::hw::packet_flow_NtoM_queue::input_map
protected

Definition at line 119 of file packet_flow_crossbar.h.

Definition at line 121 of file packet_flow_crossbar.h.

Definition at line 123 of file packet_flow_crossbar.h.

Definition at line 113 of file packet_flow_crossbar.h.

Constructor & Destructor Documentation

virtual sstmac::hw::packet_flow_NtoM_queue::~packet_flow_NtoM_queue ( )
virtual
sstmac::hw::packet_flow_NtoM_queue::packet_flow_NtoM_queue ( timestamp  send_lat,
timestamp  credit_lat,
double  out_bw,
int  num_vc,
int  buffer_size,
packet_flow_bandwidth_arbitrator arb 
)
sstmac::hw::packet_flow_NtoM_queue::packet_flow_NtoM_queue ( timestamp  send_lat,
timestamp  credit_lat,
int  num_vc,
int  buffer_size 
)

Member Function Documentation

int sstmac::hw::packet_flow_NtoM_queue::buffer_size ( ) const
inline

Definition at line 64 of file packet_flow_crossbar.h.

References buffer_size_, configure_basic_ports(), configure_div_ports(), configure_mod_ports(), and configure_offset_ports().

Referenced by sstmac::hw::packet_flow_demuxer::to_string().

Here is the call graph for this function:

void sstmac::hw::packet_flow_NtoM_queue::build_blocked_messages ( )
protected
void sstmac::hw::packet_flow_NtoM_queue::configure_basic_ports ( int  num_ports)

Referenced by buffer_size().

void sstmac::hw::packet_flow_NtoM_queue::configure_div_ports ( int  div,
int  max_port 
)

Referenced by buffer_size().

void sstmac::hw::packet_flow_NtoM_queue::configure_mod_ports ( int  mod)

Referenced by buffer_size().

void sstmac::hw::packet_flow_NtoM_queue::configure_offset_ports ( int  offset,
int  max_port 
)

Referenced by buffer_size().

int& sstmac::hw::packet_flow_NtoM_queue::credit ( int  port,
int  vc 
)
inlineprivate

Definition at line 157 of file packet_flow_crossbar.h.

References local_slot(), and resize().

Here is the call graph for this function:

void sstmac::hw::packet_flow_NtoM_queue::deadlock_check ( )
virtual

Reimplemented from sstmac::event_handler.

Referenced by port_arbitrator().

void sstmac::hw::packet_flow_NtoM_queue::deadlock_check ( event ev)
virtual

Reimplemented from sstmac::event_handler.

virtual void sstmac::hw::packet_flow_NtoM_queue::do_handle_payload ( packet_flow_payload *  pkt)
inlinevirtual

Implements sstmac::hw::packet_flow_sender.

Definition at line 39 of file packet_flow_crossbar.h.

References handle_credit(), handle_routed_payload(), init_credits(), set_input(), set_output(), and start_message().

Here is the call graph for this function:

virtual void sstmac::hw::packet_flow_NtoM_queue::handle_credit ( packet_flow_credit *  msg)
virtual
void sstmac::hw::packet_flow_NtoM_queue::handle_routed_payload ( packet_flow_payload *  pkt)
protected

Referenced by do_handle_payload().

void sstmac::hw::packet_flow_NtoM_queue::init_credits ( int  port,
int  num_credits 
)
virtual
std::string sstmac::hw::packet_flow_NtoM_queue::input_name ( packet_flow_payload *  pkt)
private

Referenced by queue().

int sstmac::hw::packet_flow_NtoM_queue::local_port ( int  port) const
inline

Definition at line 81 of file packet_flow_crossbar.h.

References port_div_, port_mod_, and port_offset_.

Referenced by local_slot(), and port_arbitrator().

int sstmac::hw::packet_flow_NtoM_queue::local_slot ( int  port,
int  vc 
) const
inline

Definition at line 90 of file packet_flow_crossbar.h.

References local_port(), and num_vc_.

Referenced by credit(), and queue().

Here is the call graph for this function:

int sstmac::hw::packet_flow_NtoM_queue::num_initial_credits ( ) const
inlinevirtual

Implements sstmac::hw::packet_flow_sender.

Definition at line 59 of file packet_flow_crossbar.h.

References buffer_size_.

event_handler* sstmac::hw::packet_flow_NtoM_queue::output_handler ( packet_flow_payload *  pkt)
private

Referenced by queue().

std::string sstmac::hw::packet_flow_NtoM_queue::output_name ( packet_flow_payload *  pkt)
private

Referenced by queue().

packet_flow_bandwidth_arbitrator*& sstmac::hw::packet_flow_NtoM_queue::port_arbitrator ( int  port)
inline

Definition at line 95 of file packet_flow_crossbar.h.

References deadlock_check(), local_port(), and port_arbitrators_.

Here is the call graph for this function:

payload_queue& sstmac::hw::packet_flow_NtoM_queue::queue ( int  port,
int  vc 
)
inlineprivate

Definition at line 163 of file packet_flow_crossbar.h.

References input_name(), local_slot(), output_handler(), and output_name().

Here is the call graph for this function:

void sstmac::hw::packet_flow_NtoM_queue::resize ( int  num_ports)
private

Referenced by credit().

void sstmac::hw::packet_flow_NtoM_queue::send_payload ( packet_flow_payload *  pkt)
protected
void sstmac::hw::packet_flow_NtoM_queue::set_input ( int  my_inport,
int  src_outport,
event_handler input 
)
virtual
void sstmac::hw::packet_flow_NtoM_queue::set_output ( int  my_outport,
int  dst_inport,
event_handler output 
)
virtual
virtual void sstmac::hw::packet_flow_NtoM_queue::start_message ( message msg)
virtual

Referenced by do_handle_payload().

int sstmac::hw::packet_flow_NtoM_queue::thread_id ( ) const
inline

Definition at line 34 of file packet_flow_crossbar.h.

References sstmac::event_handler::thread_id().

Here is the call graph for this function:

Member Data Documentation

packet_flow_bandwidth_arbitrator* sstmac::hw::packet_flow_NtoM_queue::arb_tmpl_
protected

Definition at line 125 of file packet_flow_crossbar.h.

std::map<int, std::map<int, std::list<packet_flow_payload*> > > sstmac::hw::packet_flow_NtoM_queue::blocked_messages_
protected

Definition at line 147 of file packet_flow_crossbar.h.

int sstmac::hw::packet_flow_NtoM_queue::buffer_size_
protected

Definition at line 138 of file packet_flow_crossbar.h.

Referenced by buffer_size(), and num_initial_credits().

credit_map sstmac::hw::packet_flow_NtoM_queue::credits_
protected

Definition at line 133 of file packet_flow_crossbar.h.

std::map<int, std::set<int> > sstmac::hw::packet_flow_NtoM_queue::deadlocked_channels_
protected

Definition at line 145 of file packet_flow_crossbar.h.

input_map sstmac::hw::packet_flow_NtoM_queue::inputs_
protected

Definition at line 129 of file packet_flow_crossbar.h.

int sstmac::hw::packet_flow_NtoM_queue::num_vc_
protected

Definition at line 137 of file packet_flow_crossbar.h.

Referenced by local_slot().

double sstmac::hw::packet_flow_NtoM_queue::out_bw_
protected

Definition at line 143 of file packet_flow_crossbar.h.

output_map sstmac::hw::packet_flow_NtoM_queue::outputs_
protected

Definition at line 131 of file packet_flow_crossbar.h.

std::vector<packet_flow_bandwidth_arbitrator*> sstmac::hw::packet_flow_NtoM_queue::port_arbitrators_
protected

Definition at line 127 of file packet_flow_crossbar.h.

Referenced by port_arbitrator().

int sstmac::hw::packet_flow_NtoM_queue::port_div_
protected

Definition at line 140 of file packet_flow_crossbar.h.

Referenced by local_port().

int sstmac::hw::packet_flow_NtoM_queue::port_mod_
protected

Definition at line 141 of file packet_flow_crossbar.h.

Referenced by local_port().

int sstmac::hw::packet_flow_NtoM_queue::port_offset_
protected

Definition at line 139 of file packet_flow_crossbar.h.

Referenced by local_port().

queue_map sstmac::hw::packet_flow_NtoM_queue::queues_
protected

Definition at line 135 of file packet_flow_crossbar.h.


The documentation for this class was generated from the following file: