configs,mem-ruby: SimpleNetwork physical channels

Setting the physical_vnets_channels parameter enables the emulation of
the bandwidth impact of having multiple physical channels for each
virtual network. This is implemented by computing bandwidth in a
per-vnet/channel basis within Throttle objects. The size of the
message buffers are also scaled according to this setting (when buffer
are not unlimited).

The physical_vnets_bandwidth can be used to override the channel width
set for each link and assign different widths for each virtual network.

The --simple-physical-channels option can be used with the generic
configuration scripts to automatically assign a single physical channel
to each virtual network defined in the protocol.

JIRA: https://gem5.atlassian.net/browse/GEM5-920

Change-Id: Ia8c9ec8651405eac8710d3f4d67f637a8054a76b
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/41854
Reviewed-by: Meatboy 106 <garbage2collector@gmail.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Tiago Muck
2019-05-21 18:38:52 -05:00
parent 87cdf354be
commit bab3ce1661
7 changed files with 249 additions and 57 deletions

View File

@@ -80,6 +80,10 @@ def define_options(parser):
"--garnet-deadlock-threshold", action="store",
type=int, default=50000,
help="network-level deadlock threshold.")
parser.add_argument("--simple-physical-channels", action="store_true",
default=False,
help="""SimpleNetwork links uses a separate physical
channel for each virtual network""")
def create_network(options, ruby):
@@ -187,6 +191,9 @@ def init_network(options, network, InterfaceClass):
extLink.int_cred_bridge = int_cred_bridges
if options.network == "simple":
if options.simple_physical_channels:
network.physical_vnets_channels = \
[1] * int(network.number_of_virtual_networks)
network.setup_buffers()
if InterfaceClass != None: