changeset be123e27612f in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=be123e27612f description: merged Tushar's bug fix with public repository changes
diffstat: 12 files changed, 51 insertions(+), 53 deletions(-) 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 - diffs (237 lines): diff -r 3fa11537cdfc -r be123e27612f src/mem/protocol/MOESI_CMP_token-L2cache.sm --- a/src/mem/protocol/MOESI_CMP_token-L2cache.sm Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/protocol/MOESI_CMP_token-L2cache.sm Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/protocol/MSI_MOSI_CMP_directory-L2cache.sm --- a/src/mem/protocol/MSI_MOSI_CMP_directory-L2cache.sm Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/protocol/MSI_MOSI_CMP_directory-L2cache.sm Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/protocol/RubySlicc_Util.sm --- a/src/mem/protocol/RubySlicc_Util.sm Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/protocol/RubySlicc_Util.sm Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/ruby/config/cfg.rb --- a/src/mem/ruby/config/cfg.rb Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/config/cfg.rb Tue Aug 11 12:22:41 2009 -0700 @@ -631,7 +631,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 3fa11537cdfc -r be123e27612f src/mem/ruby/config/defaults.rb --- a/src/mem/ruby/config/defaults.rb Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/config/defaults.rb Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/ruby/network/Network.cc --- a/src/mem/ruby/network/Network.cc Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/network/Network.cc Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/ruby/network/Network.hh --- a/src/mem/ruby/network/Network.hh Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/network/Network.hh Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.cc --- a/src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.cc Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.cc Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.cc --- a/src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.cc Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.cc Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/ruby/network/simple/Switch.cc --- a/src/mem/ruby/network/simple/Switch.cc Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/network/simple/Switch.cc Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/ruby/network/simple/Throttle.cc --- a/src/mem/ruby/network/simple/Throttle.cc Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/network/simple/Throttle.cc Tue Aug 11 12:22:41 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 3fa11537cdfc -r be123e27612f src/mem/ruby/slicc_interface/RubySlicc_Util.hh --- a/src/mem/ruby/slicc_interface/RubySlicc_Util.hh Sun Aug 09 13:59:14 2009 -0500 +++ b/src/mem/ruby/slicc_interface/RubySlicc_Util.hh Tue Aug 11 12:22:41 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); _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev