changeset 1fa51760a963 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=1fa51760a963
description:
        bug fix for data_msg_size in network/Network.cc

diffstat:

17 files changed, 561 insertions(+), 559 deletions(-)
src/mem/protocol/MOESI_CMP_directory-L2cache.sm                   |    2 
src/mem/protocol/MOESI_CMP_token-L2cache.sm                       |    2 
src/mem/protocol/MSI_MOSI_CMP_directory-L2cache.sm                |    2 
src/mem/protocol/RubySlicc_Util.sm                                |    1 
src/mem/ruby/config/cfg.rb                                        |    2 
src/mem/ruby/config/defaults.rb                                   |    2 
src/mem/ruby/network/Network.cc                                   |   39 
src/mem/ruby/network/Network.hh                                   |   41 
src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.cc  |    2 
src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.cc |    2 
src/mem/ruby/network/simple/Switch.cc                             |    2 
src/mem/ruby/network/simple/Throttle.cc                           |    4 
src/mem/ruby/slicc_interface/RubySlicc_Util.hh                    |    5 
tests/quick/50.memtest/ref/alpha/linux/memtest-ruby/ruby.stats    |  830 
+++++-----
tests/quick/50.memtest/ref/alpha/linux/memtest-ruby/simerr        |  132 -
tests/quick/50.memtest/ref/alpha/linux/memtest-ruby/simout        |   12 
tests/quick/50.memtest/ref/alpha/linux/memtest-ruby/stats.txt     |   40 

diffs (truncated from 1600 to 300 lines):

diff -r 0e78ffeebffd -r 1fa51760a963 
src/mem/protocol/MOESI_CMP_directory-L2cache.sm
--- a/src/mem/protocol/MOESI_CMP_directory-L2cache.sm   Tue Aug 04 09:37:27 
2009 -0700
+++ b/src/mem/protocol/MOESI_CMP_directory-L2cache.sm   Fri Aug 07 13:59:40 
2009 -0700
@@ -1389,7 +1389,7 @@
   action(uu_profileMiss, "\u", desc="Profile the demand miss") {
     peek(L1requestNetwork_in, RequestMsg) {
       // AccessModeType not implemented
-      profile_L2Cache_miss(convertToGenericType(in_msg.Type), 
in_msg.AccessMode, MessageSizeTypeToInt(in_msg.MessageSize),  in_msg.Prefetch, 
machineIDToNodeID(in_msg.Requestor));
+      //profile_L2Cache_miss(convertToGenericType(in_msg.Type), 
in_msg.AccessMode, MessageSizeTypeToInt(in_msg.MessageSize),  in_msg.Prefetch, 
machineIDToNodeID(in_msg.Requestor));
     }
   }
 
diff -r 0e78ffeebffd -r 1fa51760a963 src/mem/protocol/MOESI_CMP_token-L2cache.sm
--- a/src/mem/protocol/MOESI_CMP_token-L2cache.sm       Tue Aug 04 09:37:27 
2009 -0700
+++ b/src/mem/protocol/MOESI_CMP_token-L2cache.sm       Fri Aug 07 13:59:40 
2009 -0700
@@ -916,7 +916,7 @@
   action(uu_profileMiss, "\u", desc="Profile the demand miss") {
     peek(L1requestNetwork_in, RequestMsg) {
       // AccessModeType not implemented
-      profile_L2Cache_miss(convertToGenericType(in_msg.Type), 
in_msg.AccessMode, MessageSizeTypeToInt(in_msg.MessageSize),  in_msg.Prefetch, 
machineIDToNodeID(in_msg.Requestor));
+      //profile_L2Cache_miss(convertToGenericType(in_msg.Type), 
in_msg.AccessMode, MessageSizeTypeToInt(in_msg.MessageSize),  in_msg.Prefetch, 
machineIDToNodeID(in_msg.Requestor));
     }
   }
 
diff -r 0e78ffeebffd -r 1fa51760a963 
src/mem/protocol/MSI_MOSI_CMP_directory-L2cache.sm
--- a/src/mem/protocol/MSI_MOSI_CMP_directory-L2cache.sm        Tue Aug 04 
09:37:27 2009 -0700
+++ b/src/mem/protocol/MSI_MOSI_CMP_directory-L2cache.sm        Fri Aug 07 
13:59:40 2009 -0700
@@ -978,7 +978,7 @@
 
   action(uu_profileMiss, "\u", desc="Profile the demand miss") {
     peek(L1RequestIntraChipL2Network_in, RequestMsg) {
-      profile_L2Cache_miss(convertToGenericType(in_msg.Type), 
in_msg.AccessMode, MessageSizeTypeToInt(in_msg.MessageSize), in_msg.Prefetch, 
L1CacheMachIDToProcessorNum(in_msg.RequestorMachId));
+      //profile_L2Cache_miss(convertToGenericType(in_msg.Type), 
in_msg.AccessMode, MessageSizeTypeToInt(in_msg.MessageSize), in_msg.Prefetch, 
L1CacheMachIDToProcessorNum(in_msg.RequestorMachId));
     }
   }
 
diff -r 0e78ffeebffd -r 1fa51760a963 src/mem/protocol/RubySlicc_Util.sm
--- a/src/mem/protocol/RubySlicc_Util.sm        Tue Aug 04 09:37:27 2009 -0700
+++ b/src/mem/protocol/RubySlicc_Util.sm        Fri Aug 07 13:59:40 2009 -0700
@@ -37,7 +37,6 @@
 NodeID intToID(int nodenum);
 int IDToInt(NodeID id);
 int addressToInt(Address addr);
-int MessageSizeTypeToInt(MessageSizeType size_type);
 bool multicast_retry();
 int numberOfNodes();
 int numberOfL1CachePerChip();
diff -r 0e78ffeebffd -r 1fa51760a963 src/mem/ruby/config/cfg.rb
--- a/src/mem/ruby/config/cfg.rb        Tue Aug 04 09:37:27 2009 -0700
+++ b/src/mem/ruby/config/cfg.rb        Fri Aug 07 13:59:40 2009 -0700
@@ -602,7 +602,7 @@
     vec += " buffer_size "+buffer_size.to_s
     vec += " link_latency "+adaptive_routing.to_s
     vec += " on_chip_latency "+on_chip_latency.to_s
-
+    vec += " control_msg_size "+control_msg_size.to_s
   end
 
   def printTopology()
diff -r 0e78ffeebffd -r 1fa51760a963 src/mem/ruby/config/defaults.rb
--- a/src/mem/ruby/config/defaults.rb   Tue Aug 04 09:37:27 2009 -0700
+++ b/src/mem/ruby/config/defaults.rb   Fri Aug 07 13:59:40 2009 -0700
@@ -82,6 +82,8 @@
 
   # on chip latency
   default_param :on_chip_latency, Integer, 1
+ 
+  default_param :control_msg_size, Integer, 8
 end
 
 class GarnetNetwork < Network
diff -r 0e78ffeebffd -r 1fa51760a963 src/mem/ruby/network/Network.cc
--- a/src/mem/ruby/network/Network.cc   Tue Aug 04 09:37:27 2009 -0700
+++ b/src/mem/ruby/network/Network.cc   Fri Aug 07 13:59:40 2009 -0700
@@ -26,9 +26,44 @@
      m_adaptive_routing = (argv[i+1]=="true");
    else if (argv[i] == "link_latency")
      m_link_latency = atoi(argv[i+1].c_str());
+   else if (argv[i] == "control_msg_size")
+     m_control_msg_size = atoi(argv[i+1].c_str());              
+  }
 
-  }
+  m_data_msg_size = RubySystem::getBlockSizeBytes() + m_control_msg_size;
+
   assert(m_virtual_networks != 0);
   assert(m_topology_ptr != NULL);
-//  printf ("HERE \n");
 }
+
+int Network::MessageSizeType_to_int(MessageSizeType size_type)
+{
+  switch(size_type) {
+  case MessageSizeType_Undefined:
+    ERROR_MSG("Can't convert Undefined MessageSizeType to integer");
+    break;
+  case MessageSizeType_Control:
+  case MessageSizeType_Request_Control:
+  case MessageSizeType_Reissue_Control:
+  case MessageSizeType_Response_Control:
+  case MessageSizeType_Writeback_Control:
+  case MessageSizeType_Forwarded_Control:
+  case MessageSizeType_Invalidate_Control:
+  case MessageSizeType_Unblock_Control:
+  case MessageSizeType_Persistent_Control:
+  case MessageSizeType_Completion_Control:
+    return m_control_msg_size;
+    break;
+  case MessageSizeType_Data:
+  case MessageSizeType_Response_Data:
+  case MessageSizeType_ResponseLocal_Data:
+  case MessageSizeType_ResponseL2hit_Data:
+  case MessageSizeType_Writeback_Data:
+    return m_data_msg_size;
+    break;
+  default:
+    ERROR_MSG("Invalid range for type MessageSizeType");
+    break;
+  }
+  return 0;
+}
diff -r 0e78ffeebffd -r 1fa51760a963 src/mem/ruby/network/Network.hh
--- a/src/mem/ruby/network/Network.hh   Tue Aug 04 09:37:27 2009 -0700
+++ b/src/mem/ruby/network/Network.hh   Fri Aug 07 13:59:40 2009 -0700
@@ -71,6 +71,8 @@
   int getEndpointBandwidth() { return m_endpoint_bandwidth; }
   bool getAdaptiveRouting() {return m_adaptive_routing; }
   int getLinkLatency() { return m_link_latency; }
+  int MessageSizeType_to_int(MessageSizeType size_type);
+
 
   // returns the queue requested for the given component
   virtual MessageBuffer* getToNetQueue(NodeID id, bool ordered, int netNumber) 
= 0;
@@ -107,6 +109,8 @@
   Topology* m_topology_ptr;
   bool m_adaptive_routing;
   int m_link_latency;
+  int m_control_msg_size;
+  int m_data_msg_size;
 };
 
 // Output operator declaration
@@ -123,41 +127,4 @@
   return out;
 }
 
-// Code to map network message size types to an integer number of bytes
-const int CONTROL_MESSAGE_SIZE = 8;
-const int DATA_MESSAGE_SIZE = (RubySystem::getBlockSizeBytes()+8);
-
-extern inline
-int MessageSizeType_to_int(MessageSizeType size_type)
-{
-  switch(size_type) {
-  case MessageSizeType_Undefined:
-    ERROR_MSG("Can't convert Undefined MessageSizeType to integer");
-    break;
-  case MessageSizeType_Control:
-  case MessageSizeType_Request_Control:
-  case MessageSizeType_Reissue_Control:
-  case MessageSizeType_Response_Control:
-  case MessageSizeType_Writeback_Control:
-  case MessageSizeType_Forwarded_Control:
-  case MessageSizeType_Invalidate_Control:
-  case MessageSizeType_Unblock_Control:
-  case MessageSizeType_Persistent_Control:
-  case MessageSizeType_Completion_Control:
-    return CONTROL_MESSAGE_SIZE;
-    break;
-  case MessageSizeType_Data:
-  case MessageSizeType_Response_Data:
-  case MessageSizeType_ResponseLocal_Data:
-  case MessageSizeType_ResponseL2hit_Data:
-  case MessageSizeType_Writeback_Data:
-    return DATA_MESSAGE_SIZE;
-    break;
-  default:
-    ERROR_MSG("Invalid range for type MessageSizeType");
-    break;
-  }
-  return 0;
-}
-
 #endif //NETWORK_H
diff -r 0e78ffeebffd -r 1fa51760a963 
src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.cc
--- a/src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.cc  Tue Aug 
04 09:37:27 2009 -0700
+++ b/src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.cc  Fri Aug 
07 13:59:40 2009 -0700
@@ -114,7 +114,7 @@
         NetDest net_msg_dest = net_msg_ptr->getInternalDestination();
         Vector<NodeID> dest_nodes = net_msg_dest.getAllDest(); // gets all the 
destinations associated with this message.
 
-        int num_flits = (int) ceil((double) 
MessageSizeType_to_int(net_msg_ptr->getMessageSize())/m_net_ptr->getNetworkConfig()->getFlitSize()
 ); // Number of flits is dependent on the link bandwidth available. This is 
expressed in terms of bytes/cycle or the flit size
+        int num_flits = (int) ceil((double) 
m_net_ptr->MessageSizeType_to_int(net_msg_ptr->getMessageSize())/m_net_ptr->getNetworkConfig()->getFlitSize()
 ); // Number of flits is dependent on the link bandwidth available. This is 
expressed in terms of bytes/cycle or the flit size
 
         for(int ctr = 0; ctr < dest_nodes.size(); ctr++) // loop because we 
will be converting all multicast messages into unicast messages
         {
diff -r 0e78ffeebffd -r 1fa51760a963 
src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.cc
--- a/src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.cc Tue Aug 
04 09:37:27 2009 -0700
+++ b/src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.cc Fri Aug 
07 13:59:40 2009 -0700
@@ -109,7 +109,7 @@
         NetworkMessage *net_msg_ptr = 
dynamic_cast<NetworkMessage*>(msg_ptr.ref());
         NetDest net_msg_dest = net_msg_ptr->getInternalDestination();
         Vector<NodeID> dest_nodes = net_msg_dest.getAllDest(); // gets all the 
destinations associated with this message.
-        int num_flits = (int) ceil((double) 
MessageSizeType_to_int(net_msg_ptr->getMessageSize())/m_net_ptr->getNetworkConfig()->getFlitSize()
 ); // Number of flits is dependent on the link bandwidth available. This is 
expressed in terms of bytes/cycle or the flit size
+        int num_flits = (int) ceil((double) 
m_net_ptr->MessageSizeType_to_int(net_msg_ptr->getMessageSize())/m_net_ptr->getNetworkConfig()->getFlitSize()
 ); // Number of flits is dependent on the link bandwidth available. This is 
expressed in terms of bytes/cycle or the flit size
 
         for(int ctr = 0; ctr < dest_nodes.size(); ctr++) // loop because we 
will be converting all multicast messages into unicast messages
         {
diff -r 0e78ffeebffd -r 1fa51760a963 src/mem/ruby/network/simple/Switch.cc
--- a/src/mem/ruby/network/simple/Switch.cc     Tue Aug 04 09:37:27 2009 -0700
+++ b/src/mem/ruby/network/simple/Switch.cc     Fri Aug 07 13:59:40 2009 -0700
@@ -169,7 +169,7 @@
         int sum = message_counts[type].sum();
         if (sum != 0) {
           out << "  outgoing_messages_switch_" << m_switch_id << "_link_" << 
link << "_" << type
-              << ": " << sum << " " << sum * MessageSizeType_to_int(type)
+              << ": " << sum << " " << sum * 
(RubySystem::getNetwork()->MessageSizeType_to_int(type))
               << " " << message_counts[type] << " base_latency: " << 
throttle_ptr->getLatency() << endl;
         }
       }
diff -r 0e78ffeebffd -r 1fa51760a963 src/mem/ruby/network/simple/Throttle.cc
--- a/src/mem/ruby/network/simple/Throttle.cc   Tue Aug 04 09:37:27 2009 -0700
+++ b/src/mem/ruby/network/simple/Throttle.cc   Fri Aug 07 13:59:40 2009 -0700
@@ -275,8 +275,8 @@
   // Artificially increase the size of broadcast messages
   if (BROADCAST_SCALING > 1) {
     if (net_msg_ptr->getDestination().isBroadcast()) {
-      return (MessageSizeType_to_int(net_msg_ptr->getMessageSize()) * 
MESSAGE_SIZE_MULTIPLIER * BROADCAST_SCALING);
+      return 
(RubySystem::getNetwork()->MessageSizeType_to_int(net_msg_ptr->getMessageSize())
 * MESSAGE_SIZE_MULTIPLIER * BROADCAST_SCALING);
     }
   }
-  return (MessageSizeType_to_int(net_msg_ptr->getMessageSize()) * 
MESSAGE_SIZE_MULTIPLIER);
+  return 
(RubySystem::getNetwork()->MessageSizeType_to_int(net_msg_ptr->getMessageSize())
 * MESSAGE_SIZE_MULTIPLIER);
 }
diff -r 0e78ffeebffd -r 1fa51760a963 
src/mem/ruby/slicc_interface/RubySlicc_Util.hh
--- a/src/mem/ruby/slicc_interface/RubySlicc_Util.hh    Tue Aug 04 09:37:27 
2009 -0700
+++ b/src/mem/ruby/slicc_interface/RubySlicc_Util.hh    Fri Aug 07 13:59:40 
2009 -0700
@@ -106,11 +106,6 @@
   return (int) addr.getLineAddress();
 }
 
-extern inline int MessageSizeTypeToInt(MessageSizeType size_type)
-{
-  return MessageSizeType_to_int(size_type);
-}
-
 extern inline bool long_enough_ago(Time event)
 {
   return ((get_time() - event) > 200);
diff -r 0e78ffeebffd -r 1fa51760a963 
tests/quick/50.memtest/ref/alpha/linux/memtest-ruby/ruby.stats
--- a/tests/quick/50.memtest/ref/alpha/linux/memtest-ruby/ruby.stats    Tue Aug 
04 09:37:27 2009 -0700
+++ b/tests/quick/50.memtest/ref/alpha/linux/memtest-ruby/ruby.stats    Fri Aug 
07 13:59:40 2009 -0700
@@ -22,7 +22,7 @@
   directory_latency: 6
   directory_name: DirectoryMemory_0
   memory_controller_name: MemoryControl_0
-  memory_latency: 1
+  memory_latency: 158
   number_of_TBEs: 256
   recycle_latency: 10
   to_mem_ctrl_latency: 1
@@ -376,34 +376,34 @@
 ================ End RubySystem Configuration Print ================
 
 
-Real time: Jul/29/2009 15:40:36
+Real time: Aug/07/2009 12:01:26
 
 Profiler Stats
 --------------
-Elapsed_time_in_seconds: 1279
-Elapsed_time_in_minutes: 21.3167
-Elapsed_time_in_hours: 0.355278
-Elapsed_time_in_days: 0.0148032
+Elapsed_time_in_seconds: 3347
+Elapsed_time_in_minutes: 55.7833
+Elapsed_time_in_hours: 0.929722
+Elapsed_time_in_days: 0.0387384
 
-Virtual_time_in_seconds: 1279.21
-Virtual_time_in_minutes: 21.3202
-Virtual_time_in_hours:   0.355336
-Virtual_time_in_days:    0.0148057
+Virtual_time_in_seconds: 3329.08
+Virtual_time_in_minutes: 55.4847
+Virtual_time_in_hours:   0.924744
+Virtual_time_in_days:    0.038531
 
-Ruby_current_time: 31814465
+Ruby_current_time: 31633981
 Ruby_start_time: 1
-Ruby_cycles: 31814464
+Ruby_cycles: 31633980
 
-mbytes_resident: 150.707
-mbytes_total: 1502.61
-resident_ratio: 0.100302
+mbytes_resident: 151.66
+mbytes_total: 151.863
+resident_ratio: 0.998688
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to