58 fatal_if(
p.data_msg_size >
p.ruby_system->getBlockSizeBytes(),
59 "%s: data message size > cache line size",
name());
62 params().ruby_system->registerNetwork(
this);
69 std::unordered_map<MachineType, std::vector<NodeID>> localNodeVersions;
70 for (
auto &it :
params().ext_links) {
78 for (
int i = 0;
i < MachineType_base_level(MachineType_NUM); ++
i) {
79 MachineType mach =
static_cast<MachineType
>(
i);
80 if (localNodeVersions.count(mach)) {
81 for (
auto &ver : localNodeVersions.at(mach)) {
83 NodeID global_node_id = MachineType_base_number(mach) + ver;
99 p.ext_links,
p.int_links);
117 i !=
p.ext_links.end(); ++
i) {
122 if (!ranges.empty()) {
135 for (
auto &it :
dynamic_cast<Network *
>(
this)->
params().ext_links) {
136 it->params().ext_node->initNetQueues();
142 for (
int node = 0; node <
m_nodes; node++) {
161 case MessageSizeType_Control:
162 case MessageSizeType_Request_Control:
163 case MessageSizeType_Reissue_Control:
164 case MessageSizeType_Response_Control:
165 case MessageSizeType_Writeback_Control:
166 case MessageSizeType_Broadcast_Control:
167 case MessageSizeType_Multicast_Control:
168 case MessageSizeType_Forwarded_Control:
169 case MessageSizeType_Invalidate_Control:
170 case MessageSizeType_Unblock_Control:
171 case MessageSizeType_Persistent_Control:
172 case MessageSizeType_Completion_Control:
174 case MessageSizeType_Data:
175 case MessageSizeType_Response_Data:
176 case MessageSizeType_ResponseLocal_Data:
177 case MessageSizeType_ResponseL2hit_Data:
178 case MessageSizeType_Writeback_Data:
181 panic(
"Invalid range for type MessageSizeType");
189 std::string vnet_type)
233 const auto &matching_ranges =
addrMap.equal_range(mtype);
234 for (
auto it = matching_ranges.first; it != matching_ranges.second; it++) {
236 auto &ranges = node.
ranges;
238 if (range.contains(
addr)) {
243 return MachineType_base_count(mtype);