For some reason, answering from outlook yielded the weird automatic answer
above.
Here is my answer with inline comments below.
------------------------------------------------------------------------------------
Hello
Have generated an ARM ISA gem5.opt executable, where the PROTOCOL CHI.
Running the simple “Hello World” program on a config of [4 RNFs, 2 HNFs, 2
SNFs] and looking at the config.ini file, there are a few things I don’t
understand.
The command I use being:
./build/ARM/gem5.opt configs/example/se.py --ruby --topology=Pt2Pt --num-cpus=4
--num-dirs=2 --num-l3caches=2 --cmd=tests/test-progs/hello/bin/arm/linux/hello
From config.ini, we have
[system]
type=System
children=clk_domain cpu0 cpu1 cpu2 cpu3 cpu_clk_domain cpu_voltage_domain
dvfs_handler mem_ctrls0 mem_ctrls1 redirect_paths0 redirect_paths1
redirect_paths2 ruby sys_port_proxy voltage_domain workload
:
mem_mode=timing
mem_ranges=0:536870912 Memory is 512 MBytes
memories=system.mem_ctrls0.dram system.mem_ctrls1.dram
[system.ruby]
type=RubySystem
children=clk_domain hnf0 hnf1 network power_state rnf0 rnf1 rnf2 rnf3 snf0 snf1
So have instantiated the 4 x RNFs, 2 x HNFs, 2 x SNFs
access_backing_store=false
all_instructions=false
block_size_bytes=64
clk_domain=system.ruby.clk_domain
eventq_index=0
hot_lines=false
memory_size_bits=48
num_of_sequencers=4
number_of_virtual_networks=4
phys_mem=Null
power_model=
power_state=system.ruby.power_state
randomization=false
system=system
[system.ruby.hnf0.cntrl]
type=Cache_Controller
children=cache datIn datOut mandatoryQueue power_state prefetchQueue
replTriggerQueue reqIn reqOut reqRdy retryTriggerQueue rspIn rspOut snpIn
snpOut snpRdy triggerQueue
addr_ranges=0:536870912:0:64 What does this mean?? (range is 0: 512 Mbytes.
What does :0:64 imply??) (Similar query for system.ruby.h
nf1.cntrl.addr_range)
[GB] This is an interleaved address range. In that particular case, hnf are
interleaved on 64 bytes blocks and there are as many interleavings as there are
hnf (2 in your case). 0:64 means that it is the interleaving with ID 0 and 64
is the base 10 representation of the interleaving mask (single mask in that
case). Please look carefully at AddrRange in src/python/m5/params.py for more
details about address interleaving in gem5.
:
downstream_destinations=system.ruby.snf0.cntrl system.ruby.snf1.cntrl If I
wanted a configuration where hnf0.cntrl only communicated to
system.ruby.snf0.cntrl, would I need to generate a custom version of
CHI_configs.py or do I need to provide a custom version of CHI.py and
CHI_configs.py?
[GB] First, downstream_destination is the set of possible destinations for this
component. It does not mean that it will actually communicate will all of them.
It depends on the rest of your configuration.
Second, you don’t specify explicitly which snf a given hnf communicates with.
Instead, each hnf is responsible for a given [set of] address ranges and each
snf is also responsible for a [set of] address ranges. There is no need for hnf
and snf address ranges to correspond.
However, if you setup an hnf and a snf to be mapped to the same address ranges,
they will exclusively communicate with each other.
With the default CHI.py file, I believe this corresponds to configurations
where --num-dirs and num-l3caches are equal.
- num-dirs corresponds to the number of memory interfaces that
historically were directories in ruby but are snf in CHI
- num-l3caches corresponds to the number of hnf that contain both a
system-level cache as well as a directory… It’s a bit confusing but is a
consequence of legacy parameter naming in gem5 python.
[system.ruby.hnf0.cntrl.cache]
type=RubyCache
children=replacement_policy
assoc=16
block_size=0 Why is the block size 0 ??
:
[GB] 0 means default ruby block size value (64 bytes). You can find such
information in the .py file containing the paramemter description for a given
SimObject subclass. In that case, src/mem/ruby/structures/RubyCache.py and
src/mem/ruby/system/RubySystem.py.
Thanks in advance
JO
_______________________________________________
gem5-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s