Hello, my name is Lee Ik-hee and I am researching computer architecture.\ Using the gem5 simulator, I am writing a configuration script to divide the memory address using a heterogeneous memory controller to access dram from 0MB to 512MB and nvm from 512MB to 1024MB, but the nvm side is not accessible from the heterogeneous memory controller. How to solve this problem?\ This is my configuration script.
import m5 from m5.objects import \* \ system = System()\ system.clk_domain = SrcClockDomain()system.clk_domain.clock = "1GHz"system.clk_domain.voltage_domain = VoltageDomain()\ system.mem_mode = "timing"system.mem_ranges = \[AddrRange("0MB","512MB"),AddrRange("512MB","1024MB")\]system.cpu = ArmTimingSimpleCPU()\ system.membus = SystemXBar()\ system.cpu.icache_port = system.membus.cpu_side_portssystem.cpu.dcache_port = system.membus.cpu_side_ports\ system.cpu.createInterruptController()\ system.mem_ctrl = HeteroMemCtrl()\ system.mem_ctrl.dram = DDR3_1600_8x8()system.mem_ctrl.dram.range = system.mem_ranges\[0\]\ system.mem_ctrl.nvm = NVM_2400_1x64()system.mem_ctrl.nvm.range = system.mem_ranges\[1\]\ system.mem_ctrl.port = system.membus.mem_side_ports\ system.system_port = system.membus.cpu_side_ports\ thispath = os.path.dirname(os.path.realpath(__file__))binary = os.path.join( thispath, "../../../", "tests/test-progs/hello/bin/arm/linux/hello",)\ system.workload = SEWorkload.init_compatible(binary)\ process = Process()process.cmd = \[binary\]\ system.cpu.workload = processsystem.cpu.createThreads()\ root = Root(full_system=False, system=system)m5.instantiate()\ print(f"Beginning simulation!")exit_event = m5.simulate()print(f"Exiting @ tick {m5.curTick()} because {exit_event.getCause()}") \ Thanks for reading.\ Posted by Lee Ik-hee
_______________________________________________ gem5-users mailing list -- gem5-users@gem5.org To unsubscribe send an email to gem5-users-le...@gem5.org