1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 49 unchanged lines hidden (view full) --- 58 * abstract Network class take a enumeration parameter, and based on 59 * that to initial proper network. Or even better, just make the ruby 60 * system initializer choose the proper network to initiate. 61 */ 62 63#ifndef __MEM_RUBY_NETWORK_SIMPLE_SIMPLENETWORK_HH__ 64#define __MEM_RUBY_NETWORK_SIMPLE_SIMPLENETWORK_HH__ 65 |
66#include <iostream> 67 |
68#include "mem/gems_common/Vector.hh" 69#include "mem/ruby/common/Global.hh" 70#include "mem/ruby/network/Network.hh" 71#include "mem/ruby/system/NodeID.hh" 72#include "params/SimpleNetwork.hh" 73#include "sim/sim_object.hh" 74 75class NetDest; --- 6 unchanged lines hidden (view full) --- 82{ 83 public: 84 typedef SimpleNetworkParams Params; 85 SimpleNetwork(const Params *p); 86 ~SimpleNetwork(); 87 88 void init(); 89 |
90 void printStats(std::ostream& out) const; |
91 void clearStats(); |
92 void printConfig(std::ostream& out) const; |
93 94 void reset(); 95 96 // returns the queue requested for the given component 97 MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num); 98 MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num); 99 virtual const Vector<Throttle*>* getThrottles(NodeID id) const; 100 --- 8 unchanged lines hidden (view full) --- 109 int bw_multiplier, bool isReconfiguration); 110 void makeInLink(SwitchID src, NodeID dest, 111 const NetDest& routing_table_entry, int link_latency, 112 int bw_multiplier, bool isReconfiguration); 113 void makeInternalLink(SwitchID src, NodeID dest, 114 const NetDest& routing_table_entry, int link_latency, int link_weight, 115 int bw_multiplier, bool isReconfiguration); 116 |
117 void print(std::ostream& out) const; |
118 119 private: 120 void checkNetworkAllocation(NodeID id, bool ordered, int network_num); 121 void addLink(SwitchID src, SwitchID dest, int link_latency); 122 void makeLink(SwitchID src, SwitchID dest, 123 const NetDest& routing_table_entry, int link_latency); 124 SwitchID createSwitch(); 125 void makeTopology(); --- 9 unchanged lines hidden (view full) --- 135 136 Vector<bool> m_in_use; 137 Vector<bool> m_ordered; 138 Vector<Switch*> m_switch_ptr_vector; 139 Vector<MessageBuffer*> m_buffers_to_free; 140 Vector<Switch*> m_endpoint_switches; 141}; 142 |
143inline std::ostream& 144operator<<(std::ostream& out, const SimpleNetwork& obj) |
145{ 146 obj.print(out); |
147 out << std::flush; |
148 return out; 149} 150 151#endif // __MEM_RUBY_NETWORK_SIMPLE_SIMPLENETWORK_HH__ |