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
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev