changeset a204694db4f9 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=a204694db4f9
description:
ruby: Fix Topology throttle connections
The Topology source sets up input and output buffers for each of the
external
nodes of a topology by indexing on Ruby's generated controller unique
IDs.
These unique IDs are found by adding the MachineType_base_number to the
version
number of each controller (see any generated *_Controller.cc - init()
calls
getToNetQueue and getFromNetQueue using m_version + base). However, the
Topology object used the cntrl_id - which is required to be unique
across all
controllers - to index the controllers list as they are being connected
to
their input and output buffers. If the cntrl_ids did not match the Ruby
unique
ID, the throttles end up connected to incorrectly indexed nodes in the
network,
resulting in packets traversing incorrect network paths. This patch
fixes the
Topology indexing scheme by using the Ruby unique ID to match that of
the
SimpleNetwork buffer vectors.
diffstat:
src/mem/ruby/network/Topology.cc | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diffs (14 lines):
diff -r 44a67004d6b4 -r a204694db4f9 src/mem/ruby/network/Topology.cc
--- a/src/mem/ruby/network/Topology.cc Wed Sep 11 15:34:50 2013 -0500
+++ b/src/mem/ruby/network/Topology.cc Wed Sep 11 15:35:18 2013 -0500
@@ -89,7 +89,9 @@
// Store the ExtLink pointers for later
m_ext_link_vector.push_back(ext_link);
- int ext_idx1 = abs_cntrl->params()->cntrl_id;
+ int machine_base_idx = MachineType_base_number(
+ string_to_MachineType(abs_cntrl->getName()));
+ int ext_idx1 = machine_base_idx + abs_cntrl->getVersion();
int ext_idx2 = ext_idx1 + m_nodes;
int int_idx = router->params()->router_id + 2*m_nodes;
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev