Hello I am trying to model a system such as
1) Initially there are two clusters, [big, little] a. Have studied fs_bigLITTLE.py to see how the different clusters are generated. 2) Make use of CHI 3) Run the system in SE mode. The command I am planning to use is the following (using HelloWorld to pipeflush initially) ./build/ARM/gem5.opt configs/example/se.py -ruby --topology=Pt2Pt --cpu-type=DerivO3CPU --num-cpus=2 --num-dirs=1 --num-l3caches=1 --cmd=tests/test-progs/hello/bin/arm/linux/hello So I started making modifications in CHI.py. High level the plan being 1) Generate RNF_Big for the number of cpus and the type of CPU in the big cluster. 2) Then add a private L2$ for each RNF in RNF_Big (intent originally being to have private L2$ for each RNF. Change this late to have shared L2$) 3) Repeat (1) and (2) for the Little cluster (ie Generate RNF_Little) The code snippet being: ###################################### ## Map each BigCluster CPU into an ## RNF ###################################### for i in range(options.num_cpus_bigclust): ruby_system.rnf_big = [ CHI_RNF([cpu], ruby_system, L1ICache, L1DCache, system.cache_line_size.value) for cpu in options.cpu_type_bigclust ] # Now add a private L2 cache for each RNF in BigCluster for rnf_big in ruby_system.rnf_big: rnf_big.addPrivL2Cache(L2Cache) ######################################### ## Map each LittleCluster CPU into an ## RNF ######################################### for i in range(options.num_cpus_littleclust): ruby_system.rnf_little = [ CHI_RNF([cpu], ruby_system, L1ICache, L1DCache, system.cache_line_size.value) for cpu in options.cpu_type_littleclust ] # Now add a private L2 cache for each RNF in LittleCluster for rnf_little in ruby_system.rnf_little: rnf_little.addPrivL2Cache(L2Cache) Next I want to map 1) ruby_system.rnf_big ==> ruby_system.rnf_bigCluster 2) ruby_system.rnf_little ==> ruby_system.rnf_littleCluster. So from looking in fs_bigLITTLE.py, I have added the following class inside create_system() of CHI.py for BigCluster: ## Define the class for BigCluster and LittleCluster ## Extracted from fs_bigLITTLE.py # # BigCluster class class BigCluster(devices.CpuCluster): # This defines the constructor function for the BigCluster class. def __init__(self, system, num_cpus, cpu_clock, cpu_voltage="1.0V"): # Dont understand what cpu_config is doing ??? cpu_config = [ ObjectList.cpu_list.get("DerivO3CPU"), devices.L1I, devices.L1D, devices.WalkCache, devices.L2 ] # super() allows access to the __init__() (constructor) of the base class # namely devices.CpuCluster class. super(BigCluster, self).__init__(system, num_cpus, cpu_clock, cpu_voltage, *cpu_config) And then to instantiate the BigCluster, the tentative code being: ############################################## ## Generate Big Cluster ############################################## if options.num_cpus_bigclust > 0: ## Call to BigCluster() class ruby_system.bigCluster = BigCluster(ruby_system, options.num_cpu_bigclust, options.big_cpu_clock) ruby_system.mem_mode = ruby_system.bigCluster.memoryMode() else: m5.fatal("Number of CPUs in Big Cluster is Zero.") Pretty certain this is not going to work. But I don't know how to solve this. For the class BigCluster(), I would like to pass the following for cpu_config: cpu_config = [ruby_system.rnf_big, ## this is the actual cpu being used in the RNF for the big cluster None, ## L1I$ has already been define None, ## L1D$ has already been defined devices.WalkCache, None) ## L2$ has already been defined. Any thought/pointers as how to get the above resolved will be much appreciated. Best regards JO
_______________________________________________ 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