mem-ruby: Network can use custom data msg size
The size for network data messages can be set using a configuration parameter. This is necessary so line transfers may be split in multiple messages at the protocol level. Change-Id: I86a272de597b04a898071db412b921cbe1651ef0 Signed-off-by: Tiago Mück <tiago.muck@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/31256 Reviewed-by: Jason Lowe-Power <power.jg@gmail.com> Reviewed-by: Srikant Bharadwaj <srikant.bharadwaj@amd.com> Maintainer: Jason Lowe-Power <power.jg@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -55,6 +55,10 @@ Network::Network(const Params *p)
|
||||
m_virtual_networks = p->number_of_virtual_networks;
|
||||
m_control_msg_size = p->control_msg_size;
|
||||
|
||||
fatal_if(p->data_msg_size > p->ruby_system->getBlockSizeBytes(),
|
||||
"%s: data message size > cache line size", name());
|
||||
m_data_msg_size = p->data_msg_size + m_control_msg_size;
|
||||
|
||||
params()->ruby_system->registerNetwork(this);
|
||||
|
||||
// Populate localNodeVersions with the version of each MachineType in
|
||||
@@ -150,12 +154,6 @@ Network::~Network()
|
||||
delete m_topology_ptr;
|
||||
}
|
||||
|
||||
void
|
||||
Network::init()
|
||||
{
|
||||
m_data_msg_size = RubySystem::getBlockSizeBytes() + m_control_msg_size;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
Network::MessageSizeType_to_int(MessageSizeType size_type)
|
||||
{
|
||||
|
||||
@@ -82,7 +82,6 @@ class Network : public ClockedObject
|
||||
{ return dynamic_cast<const Params *>(_params); }
|
||||
|
||||
virtual ~Network();
|
||||
void init() override;
|
||||
|
||||
static uint32_t getNumberOfVirtualNetworks() { return m_virtual_networks; }
|
||||
int getNumNodes() const { return m_nodes; }
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
from m5.params import *
|
||||
from m5.proxy import *
|
||||
from m5.objects.ClockedObject import ClockedObject
|
||||
from m5.objects.BasicLink import BasicLink
|
||||
|
||||
@@ -53,3 +54,8 @@ class RubyNetwork(ClockedObject):
|
||||
slave = DeprecatedParam(in_port, '`slave` is now called `in_port`')
|
||||
out_port = VectorRequestPort("CPU output port")
|
||||
master = DeprecatedParam(out_port, '`master` is now called `out_port`')
|
||||
|
||||
data_msg_size = Param.Int(Parent.block_size_bytes,
|
||||
"Size of data messages. Defaults to the parent "
|
||||
"RubySystem cache line size.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user