Michael, this is a good find on your part. The SMT support in gem5 was coded well before any predecoders were added.
Thus, if you can duplicate predecoder per-thread, the problem at least in some respects is solved. If you do take this up, please don't hesitate to post the relevant patch to the reviewboard or post to gem5-dev if you are continuing on w/SMT-predecoder issues in the O3 model. On Wed, May 16, 2012 at 2:30 PM, Michael Levenhagen <[email protected]>wrote: > I'm running into the same problem. I've instrumented the code and it appears > to me that the two ThreadContext objects are sharing the same Predecoder > object. One thread does a Predecoder::doReset() and the other thread gets an > incorrect origPC. > > The inorder model has a Predecoder object for each ThreadContext. The O3Cpu > has a single Predecoder object in the DefaultFetch object. > > Michael Levenhagen > > On Thu, Apr 26, 2012 at 2:59 PM, Ankita (Garg) Goel <gargankita at gmail.com > <http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>>wrote: > > >* Hi Nilay,*>**>* You are right. I fixed this but I still get errors with > >smt:*>**>* # build/X86/gem5.opt configs/example/spec.py --cpu-type=detailed > >-n 1*>* --cmd="burnP6;burnP6" --caches --l2cache*>**>* panic: > >Unrecognized/invalid instruction executed:*>**>* {*>* leg = 0,*>* rex = > >0,*>* op = {*>* num = 1,*>* op = 0xdc,*>* prefixA = 0,*>* prefixB = 0*>* > >},*>* modRM = 0xdc,*>* sib = 0,*>* immediate = 0,*>* displacement = 0*>* > >dispSize = 0}*>**>* @ cycle 515088*>* [invoke:build/X86/arch/x86/faults.cc, > >line 131]*>**>* This is with cpuburn program. But I have tried several > >benchmarks/commands*>* which work fine without smt. Not sure what could be > >the reason.. any ideas*>* folks ?*>**>* Regards,*>* Ankita*>**>* On Sun, Apr > >8, 2012 at 7:47 PM, Nilay Vaish <nilay at cs.wisc.edu > ><http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>> wrote:*>**>>* In the > >first hunk of the patch, options.cmd.split(';') will return a list*>>* of > >strings, not a numeric value. The check should always fail. Are you sure*>>* > >it is working correctly?*>>**>>* --*>>* Nilay*>>**>>**>>* On Sun, 8 Apr > >2012, Ankita (Garg) Goel wrote:*>>**>>* Hi,*>>>**>>>* The > >configs/example/se.py script has a small error that does not allow*>>>* > >proper workload assignment to SMT threads. I made the following changes*>>>* > >to*>>>* fix that part:*>>>**>>>* --- a/configs/example/se.py*>>>* +++ > >b/configs/example/se.py*>>>* @@ -111,11 +111,11 @@ if options.bench:*>>>* > > print >>sys.stderr, "Unable to find workload for %s: %s" %*>>>* > >(buildEnv['TARGET_ISA'], app)*>>>* sys.exit(1)*>>>* else:*>>>* - > > process = LiveProcess()*>>>* - process.executable = options.cmd*>>>* - > > process.cmd = [options.cmd] + options.options.split()*>>>* - > >multiprocesses.append(process)*>>>* -*>>>* + if options.cmd.split(';') == > >1:*>>>* + process = LiveProcess()*>>>* + process.executable = > >options.cmd*>>>* + process.cmd = [options.cmd] + > >options.options.split()*>>>* + > >multiprocesses.append(process)*>>>**>>>* if options.input != "":*>>>* > >process.input = options.input*>>>* @@ -157,6 +157,7 @@ if options.cpu_type > >== "detailed" or options.cpu_type*>>>* == "inorder":*>>>* if > >errouts and errouts[smt_idx]:*>>>* smt_process.errout = > >errouts[smt_idx]*>>>* process += [smt_process, ]*>>>* + > >multiprocesses.append(process)*>>>* smt_idx += 1*>>>* > >numThreads = len(workloads)*>>>**>>>* I am simulating X86 with detailed > >core. The simulation aborts with the*>>>* following error:*>>>**>>>* command > >line: build/X86/gem5.opt configs/example/se.py*>>>* --cpu-type=detailed*>>>* > >-n 1 --cmd=test;test --caches --l2cache --l3cache --clock=3400MHz*>>>* > >--maxinsts=100000*>>>* Global frequency set at 1000000000000 ticks per > >second*>>>* 0: system.remote_gdb.listener: listening for remote gdb #0 on > >port 7002*>>>* 0: system.remote_gdb.listener: listening for remote gdb #1 on > >port 7003*>>>* **** REAL SIMULATION *****>>>* info: Entering event queue @ > >0. Starting simulation...*>>>* panic: Tried to read unmapped address > >0x4d2f7cd.*>>>* @ cycle 226380*>>>* [invoke:build/X86/arch/x86/**faults.cc, > >line 160]*>>>* Memory Usage: 1025680 KBytes*>>>* Program aborted at cycle > >226380*>>>* Aborted*>>>**>>>* Any ideas of what might be going wrong ? I'd > >be happy to provide more*>>>* debug*>>>* information. Thanks for your help > >!*>>>**>>>* --*>>>* Regards,*>>>* Ankita*>>>* Graduate Student*>>>* > >Department of Computer Science*>>>* University of Texas at Austin*>>>**>>>* > >______________________________**_________________*>>* gem5-users mailing > >list*>>* gem5-users at gem5.org > ><http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>*>>* > >http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>*>>**>**>**>**>* > > --*>* Regards,*>* Ankita*>* Graduate Student*>* Department of Computer > >Science*>* University of Texas at Austin* > > > > _______________________________________________ > gem5-users mailing list > [email protected] > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users > -- - Korey
_______________________________________________ gem5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
