Hello Gabriel >> addSharedL2Cache is only called on lines 465 and 470 of CHI.py and these >> lines are touched only if options.littleclust_l2cache == 'shared'. >> You don't set it in the command line and the default value is 'private', >> which explains why it never gets called.
The command line I use is the following and littleclust-l2cache=shared (please see highlighted below). The parser then translates this to options.littleclust_l2_cache=shared. ./build/ARM/gem5.opt configs/example/se_kirin_custom.py --ruby --topology=Pt2Pt --cpu-type=DerivO3CPU --num-cpus=4 --num-dirs=1 --num-l3caches=1 --num-cpu-bigclust=0 --num-cpu-middleclust=0 --num-cpu-littleclust=4 --num-clusters=1 --cpu-type-bigclust=derivo3 --cpu-type-middleclust=hpi --cpu-type-littleclust=timesimple --bigclust-l2cache=shared --middleclust-l2cache=shared --littleclust-l2cache=shared --num-bigclust-subclust=1 --num-middleclust-subclust=1 --num-littleclust-subclust=1 --cmd=tests/test-progs/hello/bin/arm/linux/hello I printed out the options as parsed when the command is run and it shows that littleclust_l2cache= shared: Command Line Options extracted being: {'num_cpus': 4, 'sys_voltage': '1.0V', ..... 'spec_input': 'ref', 'arm_iset': 'arm', 'stats_root': [], 'cmd': 'tests/test-progs/hello/bin/arm/linux/hello', 'options': '', ...... 'middleclust_l2cache': 'shared', 'littleclust_l2cache': 'shared', 'big_cpu_clock': '4GHz', 'middle_cpu_clock': '2GHz', 'little_cpu_clock': '1GHz', 'l1i_size_big': '32kB', 'l1i_assoc_big': 2, 'l1d_size_big': '32kB', 'l1d_assoc_big': 2, 'l2_size_big': '32kB', 'l2_assoc_big': 2, 'l1i_size_little': '32kB', 'l1i_assoc_little': 2, 'l1d_size_little': '32kB', 'l1d_assoc_little': 2, 'l2_size_little': '32kB', 'l2_assoc_little': 2, 'l1i_size_middle': '32kB', 'l1i_assoc_middle': 2, 'l1d_size_middle': '32kB', 'l1d_assoc_middle': 2, 'l2_size_middle': '32kB', 'l2_assoc_middle': 2, 'num_bigclust_subclust': '1', 'num_middleclust_subclust': '1', 'num_littleclust_subclust': '1', 'num_cpu_littleclust_subclust2': 1, 'num_cpu_middleclust_subclust2': 1, 'num_cpu_bigclust_subclust2': 1, 'topology': 'Pt2Pt', 'mesh_rows': 0, 'network': 'simple', 'router_latency': 1, 'link_latency': 1, 'link_width_bits': 128, 'vcs_per_vnet': 4, 'routing_algorithm': 0, 'network_fault_model': False, 'garnet_deadlock_threshold': 50000} I am currently working on getting the littleCluster working for shared L2 cache and once this is working, then update and get the other two clusters working. I have also added print statements inside CHI_config.CHI_RNF_CLUST_SHARED_L2.addSharedL2CacheL(): CHI_RNF_CLUST_SHARED_L2.addSharedL2, self._cntrls is: [<ruby.CHI_config.CHI_L1Controller object at 0x7f6171c76da0>, <ruby.CHI_config.CHI_L1Controller object at 0x7f6171c838d0>, <ruby.CHI_config.CHI_L1Controller object at 0x7f6171c92d30>, <ruby.CHI_config.CHI_L1Controller object at 0x7f6171c9b860>, <ruby.CHI_config.CHI_L1Controller object at 0x7f6171c2bc50>, <ruby.CHI_config.CHI_L1Controller object at 0x7f6171c35780>, <ruby.CHI_config.CHI_L1Controller object at 0x7f6171c45b70>, <ruby.CHI_config.CHI_L1Controller object at 0x7f6171c4e6a0>, <ruby.CHI_config.CHI_L2Controller object at 0x7f6171c5f518>] So this shows the 4 x L1I controller and 4 x L1D controller and the single L2 Controller. So far so good. CHI_RNF_CLUST_SHARED_L2.addSharedL2, self.connectController is: <bound method CHI_Node.connectController of <ruby.CHI_config.CHI_RNF_CLUST_SHARED_L2 object at 0x7f6171c76588>> So one L2 controller to connect to the CHI network. CHI_RNF_CLUST_SHARED_L2.addSharedL2, self._ll_cntrls is: [<ruby.CHI_config.CHI_L2Controller object at 0x7f6171c5f518>] So last level controller for this cluster is the single L2 controller. So far so good. However, when I print out cntrl from lines 621-623 of CHI.py: # Setup data message size for all controllers for cntrl in all_cntrls: print ("CHI.py -- Cntrl is %s\n" % (cntrl)) cntrl.data_channel_size = params.data_width I get the following output: CHI.py -- Cntrl is <orphan System>.cpu0.l1i CHI.py -- Cntrl is <orphan System>.cpu0.l1d CHI.py -- Cntrl is <orphan System>.cpu1.l1i CHI.py -- Cntrl is <orphan System>.cpu1.l1d CHI.py -- Cntrl is <orphan System>.cpu2.l1i CHI.py -- Cntrl is <orphan System>.cpu2.l1d CHI.py -- Cntrl is <orphan System>.cpu3.l1i CHI.py -- Cntrl is <orphan System>.cpu3.l1d CHI.py -- Cntrl is <orphan System>.cpu0.l1i.downstream_destinations <== This looks wrong. CHI.py -- Cntrl is <orphan System>.ruby.hnf.cntrl CHI.py -- Cntrl is <orphan System>.ruby.snf.cntrl And I don't see any control for the L2 cache and I don't see the implementation for L2 cache in the config.ini Any further help, much appreciated. Best regards JO -----Original Message----- From: Gabriel Busnot via gem5-users [mailto:gem5-users@gem5.org] Sent: 20 July 2021 13:51 To: gem5-users@gem5.org Cc: Gabriel Busnot <gabriel.bus...@arteris.com> Subject: [gem5-users] Re: CHI - Cluster CPUs having a shared L2 cache Hi Javed, addSharedL2Cache is only called on lines 465 and 470 of CHI.py and these lines are touched only if options.littleclust_l2cache == 'shared'. You don't set it in the command line and the default value is 'private', which explains why it never gets called. Also I suspect that on lines 475 and 481 at least, you intended to call addSharedL2Cache instead of addPrivL2Cache. Maybe you could start over from the original CHI_config.py file and add the addSharedL2Cache to CHI_RNF to check that it works in a simpler case. There should really not be much to change from addPricL2Cache implementation to get a shared L2. Walk your way up from a single cluster and single cpu cluster to a single cluster and dual cpu to a multi cluster and multi cpu configuration. Once you are sure about what needs to be done for a shared L2 cache to work, you will be able to clean up you current implementation from all these little bugs ;) I see no reason for this not to work. Best, Gabriel _______________________________________________ gem5-users mailing list -- gem5-users@gem5.org<mailto:gem5-users@gem5.org> To unsubscribe send an email to gem5-users-le...@gem5.org<mailto:gem5-users-le...@gem5.org> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________ 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