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

Reply via email to