I'd like to post my progress on solving this problem.
(It's not solved yet..)
I decided to see what's really going on when running bzip2_source on both:
* Classic memory system
* Ruby memory system.
To do so, I used the following command:
./util/tracediff build/X86/gem5.opt --debug-flags=Exec,-ExecTicks
configs/example/se_phm.py '--cpu-type=timing|--ruby' --mem-size=4GB
--bench=bzip2_source
The relevant part of the resultant tracediff file (tracediff-*.out) is:
-build/X86/gem5.opt -d tracediff-11723-1 --debug-flags=Exec,-ExecTicks
configs/example/se_phm.py --cpu-type=timing --mem-size=4GB --bench=bzip2_source
2>&1 |
+build/X86/gem5.opt -d tracediff-11723-2 --debug-flags=Exec,-ExecTicks
configs/example/se_phm.py --ruby --mem-size=4GB --bench=bzip2_source 2>&1 |
... (I omitted this part.)
@@ -5826 +5826 @@
system.cpu T0 : @_dl_non_dynamic_init+610.2 : JZ_I : wrip , t1, t2 :
IntAlu :
system.cpu T0 : @_dl_non_dynamic_init+612.0 : XOR_R_R : xor edx, edx, edx
: IntAlu : D=0x0000000000000000
system.cpu T0 : @_dl_non_dynamic_init+614.0 : CMP_M_I : limm t2d,
0x6474e551 : IntAlu : D=0x000000006474e551
-system.cpu T0 : @_dl_non_dynamic_init+614.1 : CMP_M_I : ld t1d, DS:[rcx]
: MemRead : D=0x0000000000000001 A=0x400040
+system.cpu T0 : @_dl_non_dynamic_init+614.1 : CMP_M_I : ld t1d, DS:[rcx]
: MemRead : D=0x0000000000000000 A=0x400040
system.cpu T0 : @_dl_non_dynamic_init+614.2 : CMP_M_I : sub t0d, t1d, t2d
: IntAlu : D=0x0000000000000001
system.cpu T0 : @_dl_non_dynamic_init+620.0 : LEA_R_M : lea rax, DS:[rcx
+ 0x38] : IntAlu : D=0x0000000000400078
system.cpu T0 : @_dl_non_dynamic_init+624.0 : JNZ_I : rdip t1, %ctrl153,
: IntAlu : D=0x000000000042a802
@@ -5842 +5842 @@
system.cpu T0 : @_dl_non_dynamic_init+635.0 : ADD_R_I : limm t1, 0x38 :
IntAlu : D=0x0000000000000038
system.cpu T0 : @_dl_non_dynamic_init+635.1 : ADD_R_I : add rax, rax, t1
: IntAlu : D=0x0000000000000000
system.cpu T0 : @_dl_non_dynamic_init+639.0 : CMP_M_I : limm t2d,
0x6474e551 : IntAlu : D=0x000000006474e551
-system.cpu T0 : @_dl_non_dynamic_init+639.1 : CMP_M_I : ld t1d, DS:[rax +
0xffffffffffffffc8] : MemRead : D=0x0000000000000001 A=0x400078
+system.cpu T0 : @_dl_non_dynamic_init+639.1 : CMP_M_I : ld t1d, DS:[rax +
0xffffffffffffffc8] : MemRead : D=0x0000000000000000 A=0x400078
system.cpu T0 : @_dl_non_dynamic_init+639.2 : CMP_M_I : sub t0d, t1d, t2d
: IntAlu : D=0x0000000000000001
system.cpu T0 : @_dl_non_dynamic_init+646.0 : JZ_I : rdip t1, %ctrl153,
: IntAlu : D=0x000000000042a818
system.cpu T0 : @_dl_non_dynamic_init+646.1 : JZ_I : limm t2, 0x68 :
IntAlu : D=0x0000000000000068
...
There are more differences in "... (I omitted this part)" above, but I think
that they are not relevant.
(Because those differences also occur when running the simulation without Ruby,
but with different CPU models.)
As you can see in the tracediff file above, The different behavior of the two
CPU models looks like coming from the different value of 'D' in MemRead
operations (One is '0' and the other is '1').
After 2 more similar-kind of MemRead's D-differences, the difference of the two
simulations diverges.
Can this be any clue of solving this problem?
Thanks,
Hanmin
From: 박한민 [mailto:[email protected]]
Sent: Wednesday, November 20, 2013 4:06 PM
To: '[email protected]'
Subject: Error running SPEC CPU2006 in SE mode with Ruby
Hi, all!
I’m trying to run bzip2_source of SPEC CPU2006 in SE mode with Ruby enabled.
Before showing you the details of the problem, I’d like to note that without
Ruby enabled (that is, using the Classic memory system), it runs well using the
following command:
./build/X86/gem5.opt configs/example/se_phm.py --mem-size=4GB
--bench=bzip2_source
Two things to note here:
• The configuration script above (se_phm.py) is a mere copy of the
“configs/example/se.py”, except that I modified the original to apply SPEC
CPU2006 instead of SPEC CPU2000.
• “--mem-size” option is used because without it, the simulation gives “fatal:
Out of memory, please increase size of physical memory.” error.
To enable Ruby, I added “--ruby” option and used the following command to run
the simulation:
./build/X86/gem5.opt configs/example/se_phm.py --ruby --mem-size=4GB
--bench=bzip2_source
This results in “panic: Tried to read unmapped address 0x8.” error.
I first thought that this problem comes from the fact that the two simulations
use different CPU models (AtomicSimpleCPU for the Classic and TimingSimpleCPU
for Ruby).
So, I tried the Classic memory system with a TimingSimpleCPU using the
following command:
./build/X86/gem5.opt configs/example/se_phm.py --cpu-type=timing --mem-size=4GB
--bench=bzip2_source
(Note the “--cpu-type” option.)
In this case, the simulation runs well without any error.
I am stuck with not being able to find out why the simulation fails with Ruby
enabled..
Any ideas?
Thanks,
Hanmin
Design Automation Laboratory, Seoul National University
TEL +82-2-880-1787
EMAIL [email protected]
Hanmin Park
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users