Network.cc revision 8259:36987780169e
112855Sgabeblack@google.com/* 212855Sgabeblack@google.com * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 312855Sgabeblack@google.com * All rights reserved. 412855Sgabeblack@google.com * 512855Sgabeblack@google.com * Redistribution and use in source and binary forms, with or without 612855Sgabeblack@google.com * modification, are permitted provided that the following conditions are 712855Sgabeblack@google.com * met: redistributions of source code must retain the above copyright 812855Sgabeblack@google.com * notice, this list of conditions and the following disclaimer; 912855Sgabeblack@google.com * redistributions in binary form must reproduce the above copyright 1012855Sgabeblack@google.com * notice, this list of conditions and the following disclaimer in the 1112855Sgabeblack@google.com * documentation and/or other materials provided with the distribution; 1212855Sgabeblack@google.com * neither the name of the copyright holders nor the names of its 1312855Sgabeblack@google.com * contributors may be used to endorse or promote products derived from 1412855Sgabeblack@google.com * this software without specific prior written permission. 1512855Sgabeblack@google.com * 1612855Sgabeblack@google.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1712855Sgabeblack@google.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1812855Sgabeblack@google.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1912855Sgabeblack@google.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2012855Sgabeblack@google.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2112855Sgabeblack@google.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2212855Sgabeblack@google.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2312855Sgabeblack@google.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2412855Sgabeblack@google.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2512855Sgabeblack@google.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2612855Sgabeblack@google.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2712855Sgabeblack@google.com */ 2812855Sgabeblack@google.com 2912855Sgabeblack@google.com#include "base/misc.hh" 3012855Sgabeblack@google.com#include "mem/protocol/MachineType.hh" 3112855Sgabeblack@google.com#include "mem/ruby/network/Network.hh" 3212855Sgabeblack@google.com#include "mem/ruby/network/Topology.hh" 3312855Sgabeblack@google.com 3412855Sgabeblack@google.comNetwork::Network(const Params *p) 3512855Sgabeblack@google.com : SimObject(p) 3612855Sgabeblack@google.com{ 3712855Sgabeblack@google.com m_virtual_networks = p->number_of_virtual_networks; 3812855Sgabeblack@google.com m_topology_ptr = p->topology; 3912855Sgabeblack@google.com m_link_latency = p->link_latency; 4012855Sgabeblack@google.com m_control_msg_size = p->control_msg_size; 4112855Sgabeblack@google.com 4212855Sgabeblack@google.com // Total nodes/controllers in network 4312855Sgabeblack@google.com // Must make sure this is called after the State Machine constructors 4412855Sgabeblack@google.com m_nodes = MachineType_base_number(MachineType_NUM); 4512855Sgabeblack@google.com assert(m_nodes != 0); 4612855Sgabeblack@google.com 4712855Sgabeblack@google.com assert(m_virtual_networks != 0); 4812855Sgabeblack@google.com assert(m_topology_ptr != NULL); 4912855Sgabeblack@google.com 5012855Sgabeblack@google.com // Initialize the controller's network pointers 5112855Sgabeblack@google.com m_topology_ptr->initNetworkPtr(this); 5212855Sgabeblack@google.com} 5312855Sgabeblack@google.com 5412855Sgabeblack@google.comvoid 5512855Sgabeblack@google.comNetwork::init() 5612855Sgabeblack@google.com{ 5712855Sgabeblack@google.com m_data_msg_size = RubySystem::getBlockSizeBytes() + m_control_msg_size; 5812855Sgabeblack@google.com} 5912855Sgabeblack@google.com 6012855Sgabeblack@google.comint 6112855Sgabeblack@google.comNetwork::MessageSizeType_to_int(MessageSizeType size_type) 6212855Sgabeblack@google.com{ 6312855Sgabeblack@google.com switch(size_type) { 6412855Sgabeblack@google.com case MessageSizeType_Undefined: 6512855Sgabeblack@google.com panic("Can't convert Undefined MessageSizeType to integer"); 6612855Sgabeblack@google.com break; 6712855Sgabeblack@google.com case MessageSizeType_Control: 6812855Sgabeblack@google.com case MessageSizeType_Request_Control: 6912855Sgabeblack@google.com case MessageSizeType_Reissue_Control: 7012855Sgabeblack@google.com case MessageSizeType_Response_Control: 7112855Sgabeblack@google.com case MessageSizeType_Writeback_Control: 7212855Sgabeblack@google.com case MessageSizeType_Broadcast_Control: 7312855Sgabeblack@google.com case MessageSizeType_Multicast_Control: 7412855Sgabeblack@google.com case MessageSizeType_Forwarded_Control: 7512855Sgabeblack@google.com case MessageSizeType_Invalidate_Control: 7612855Sgabeblack@google.com case MessageSizeType_Unblock_Control: 7712855Sgabeblack@google.com case MessageSizeType_Persistent_Control: 7812855Sgabeblack@google.com case MessageSizeType_Completion_Control: 7912855Sgabeblack@google.com return m_control_msg_size; 8012855Sgabeblack@google.com case MessageSizeType_Data: 8112855Sgabeblack@google.com case MessageSizeType_Response_Data: 8212855Sgabeblack@google.com case MessageSizeType_ResponseLocal_Data: 8312855Sgabeblack@google.com case MessageSizeType_ResponseL2hit_Data: 8412855Sgabeblack@google.com case MessageSizeType_Writeback_Data: 8512855Sgabeblack@google.com return m_data_msg_size; 8612855Sgabeblack@google.com default: 8712855Sgabeblack@google.com panic("Invalid range for type MessageSizeType"); 8812855Sgabeblack@google.com break; 8912855Sgabeblack@google.com } 9012855Sgabeblack@google.com} 9112855Sgabeblack@google.com 9212855Sgabeblack@google.comconst std::vector<Throttle*>* 9312855Sgabeblack@google.comNetwork::getThrottles(NodeID id) const 9412855Sgabeblack@google.com{ 9512855Sgabeblack@google.com return NULL; 9612855Sgabeblack@google.com} 9712855Sgabeblack@google.com