Javed Osmany wrote: > Hello Gabriel > > Thank you for your answers. > > To address the points you have raised: > > > > [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. > > > The command line I am using to run the simple test 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 > > So this is making use of the default CHI.py and CHI_config.py > > > > 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. > > > As mentioned above, I am using the default configs. Therefore, where could I > find the > above information (ie which snf a given hnf communicates with). I could not > see it in > config.ini. An hnf will pick the snf that is mapped to the address it is targeting. Make sure the hnf and the snf you want to communicate with each other have the same address range in the ini file and you should be good.
If you want to check how interleavings are defined, please look at CHI_HNF.createAddrRanges() in CHI_config.py for hnf interleavings and setup_memory_controllers() in Ruby.py. > > > > > However, if you setup an hnf and a snf to be > > mapped to the same address ranges, they will exclusively communicate with > > each other. > > > That makes sense. > > > > > With the default CHI.py file, I believe this > > corresponds to configurations where --num-dirs and num-l3caches are equal. > > > Yes. I tried using different values for –num-dirs and num-l3caches and this > then generated > a run time error. This does not seem normal for "reasonnable" values of num-dirs and num-l3caches. Maybe you could report the error in another thread or on the gem5 Jira. > > > Best regards > JO > From: Gabriel Busnot [mailto:gabriel.bus...@arteris.com] > Sent: 02 June 2021 15:44 > To: gem5 users mailing list <gem5-users(a)gem5.org> > Cc: Javed Osmany <javed.osmany(a)huawei.com> > Subject: RE: Running CHI protocol configurations > > Hi Javed, > > Answers inline. > > Best, > Gabriel > > From: Javed Osmany via gem5-users > <gem5-users@gem5.org<mailto:gem5-users@gem5.org>> > Sent: 02 June 2021 16:21 > To: gem5 users mailing list > <gem5-users@gem5.org<mailto:gem5-users@gem5.org>> > Cc: Javed Osmany <javed.osm...@huawei.com<mailto:javed.osm...@huawei.com>> > Subject: [gem5-users] Running CHI protocol configurations > > > [EXTERNAL EMAIL] > 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 > > To reduce fraud or cyber-crime risks, Arteris IP will never instruct you to > change wire > payment instructions or bank account details using email or fax. If you > receive such an > email or fax appearing to be from Arteris IP, please call your Arteris IP’s > contact to > verify. Please do not verify by email. _______________________________________________ gem5-users mailing list -- gem5-users@gem5.org To unsubscribe send an email to gem5-users-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s