Hi all,
I have a problem trying modifying OPAL module to
construct a 4-core redundantly executed CMP system.
The system is designed to uses the first two cores to
execute as master cores and the others are used to execute redundantly. In order
to achieve the goal, I have create "virtual" opal objects. The virtual
objects are avoid to communicate with simics and I have also modified
some codes to bypass the information (simics state--PSTATE) required to the
virtual objects.
I run for 10000 instructions and dump some statistics.
Here I found that core-0 and core-2 successfully executed for about 10000
insts(the instructions they executed are really the same), while
core-1 and core-3 execution are out of my expectation, they
stopped soon. Here are some information dumpped within
retireInstruction().
core-1
------------------------------------------------------------------------------------------------
tl:0
PC_inorder:83776 seq 0
cycle 291 tr 1048
sethi
tl:0
PC_inorder:83780 seq 1
cycle 291 tr 1048 sethi 179200,
%i1
tl:0
PC_inorder:83784 seq 2
cycle 586 tr 1048 lduw [%i1 + 72],
%o0
tl:0
PC_inorder:83788 seq 3
cycle 592 tr 1048 st %g0, [%o7 +
456]
tl:0
PC_inorder:83792 seq 4
cycle 592 tr 1048 cmp %o0, 1,
%g0
tl:0
PC_inorder:83796 seq 5
cycle 592 tr 1048 bleu
<0x28>,
tl:0
PC_inorder:83800 seq 6
cycle 592 tr 1048 mov %g0, 1,
%l0
tl:0
PC_inorder:83804 seq 7
cycle 593 tr 1048 sethi 81920,
%l1
tl:0
PC_inorder:83808 seq 8
cycle 593 tr 1048 call
<0x4430>,
tl:0
PC_inorder:83812 seq 9
cycle 593 tr 1048 or %l1, 876,
%o0
tl:0
PC_inorder:101264 seq 10 cycle
593 tr 1048 save %o6,
<0xffffffffffffff88>, %pstate
tl:0
PC_inorder:101268 seq 11 cycle
594 tr 1048 sethi 178176,
%l0
tl:0
PC_inorder:101272 seq 12 cycle
872 tr 1048 lduw [%l0 + 48],
%g1
tl:0
PC_inorder:101276 seq 13 cycle
1156 tr 1048 lduw [%g1 + 8],
%o0
tl:0
PC_inorder:101280 seq 14 cycle
1156 tr 1048 call
<0x12228>,
tl:0
PC_inorder:101284 seq 15 cycle
1156 tr 1048 add %i6, -20,
%o1
tl:0
PC_inorder:175560 seq 16 cycle
1156 tr 1048 sethi 700416,
%g1
tl:0
PC_inorder:175564 seq 17 cycle
1157 tr 1048 ba
<0xfffffffffffffd50>,
tl:0
PC_inorder:174876 seq 18 cycle
1157 tr 1048 save %o6, <0xffffffffffffffc0>,
%pstate
tl:0
PC_inorder:174880 seq 19 cycle
1157 tr 1048 call
<0xffffffffff389088>,
tl:0
PC_inorder:174884 seq 20 cycle
1162 tr 1048 nop
tl:0
PC_inorder:4282071976 seq 21 cycle
1162 tr 1048 mov %g0, %i7,
%o0
tl:0 PC_inorder:4282071980 seq 22
cycle 1162 tr 36 save %o6,
<0xffffffffffffffa0>, %pstate
tl:1
PC_inorder:16778368 seq 23 cycle
1454 tr 1048 rdpr %cleanwin
%l0
tl:1 PC_inorder:16778372 seq
24 cycle 1456 tr 1048 add %l0, 1,
%l0
tl:1 PC_inorder:16778376 seq
25 cycle 1458 tr 1048 wrpr %l0, %g0,
%(null)
tl:1 PC_inorder:16778380
seq 26 cycle 1458 tr 1048 mov %g0, %g0,
%l0
tl:1 PC_inorder:16778384 seq
27 cycle 1458 tr 1048 mov %g0, %g0,
%l1
tl:1 PC_inorder:16778388 seq
28 cycle 1458 tr 1048 mov %g0, %g0,
%l2
tl:1 PC_inorder:16778392 seq
29 cycle 1459 tr 1048 mov %g0, %g0,
%l3
tl:1 PC_inorder:16778396 seq
30 cycle 1459 tr 1048 mov %g0, %g0,
%l4
tl:1 PC_inorder:16778400 seq
31 cycle 1459 tr 1048 mov %g0, %g0,
%l5
tl:1 PC_inorder:16778404 seq
32 cycle 1459 tr 1048 mov %g0, %g0,
%l6
tl:1 PC_inorder:16778408 seq
33 cycle 1460 tr 1048 mov %g0, %g0,
%l7
tl:1 PC_inorder:16778412 seq
34 cycle 1460 tr 1048 mov %g0, %g0,
%o0
tl:1 PC_inorder:16778416 seq
35 cycle 1460 tr 1048 mov %g0, %g0,
%o1
tl:1 PC_inorder:16778420 seq
36 cycle 1460 tr 1048 mov %g0, %g0,
%o2
tl:1
PC_inorder:16778424 seq 37 cycle
1461 tr 1048 mov %g0, %g0,
%o3
tl:1 PC_inorder:16778428 seq
38 cycle 1461 tr 1048 mov %g0, %g0,
%o4
tl:1 PC_inorder:16778432 seq
39 cycle 1740 tr 1048 mov %g0, %g0,
%o5
tl:1 PC_inorder:16778436 seq
40 cycle 1740 tr 1048 mov %g0, %g0,
%o6
tl:1 PC_inorder:16778440 seq
41 cycle 1740 tr 1048 mov %g0, %g0,
%o7
tl:1 PC_inorder:16778444 seq
42 cycle 1740 tr 1048 retry
%pstate
---------------------------------------------------------------------------------------------
core-3
tl:0
PC_inorder:83776 seq 0
cycle 300 tr 1048
sethi
tl:0
PC_inorder:83780 seq 1
cycle 300 tr 1048 sethi 179200,
%i1
tl:0
PC_inorder:83784 seq 2
cycle 598 tr 1048 lduw [%i1 + 72],
%o0
tl:0
PC_inorder:83788 seq 3
cycle 606 tr 1048 st %g0, [%o7 +
456]
tl:0
PC_inorder:83792 seq 4
cycle 606 tr 1048 cmp %o0, 1,
%g0
tl:0
PC_inorder:83796 seq 5
cycle 606 tr 1048 bleu
<0x28>,
tl:0
PC_inorder:83800 seq 6
cycle 606 tr 1048 mov %g0, 1,
%l0
tl:0
PC_inorder:83804 seq 7
cycle 607 tr 1048 sethi 81920,
%l1
tl:0
PC_inorder:83808 seq 8
cycle 607 tr 1048 call
<0x4430>,
tl:0
PC_inorder:83812 seq 9
cycle 607 tr 1048 or %l1, 876,
%o0
tl:0
PC_inorder:101264 seq 10 cycle
608 tr 1048 save %o6,
<0xffffffffffffff88>, %pstate
tl:0
PC_inorder:101268 seq 11 cycle
608 tr 1048 sethi 178176,
%l0
tl:0
PC_inorder:101272 seq 12 cycle
886 tr 1048 lduw [%l0 + 48],
%g1
tl:0
PC_inorder:101276 seq 13 cycle
1173 tr 1048 lduw [%g1 + 8],
%o0
tl:0
PC_inorder:101280 seq 14 cycle
1173 tr 1048 call
<0x12228>,
tl:0
PC_inorder:101284 seq 15 cycle
1173 tr 1048 add %i6, -20,
%o1
tl:0
PC_inorder:175560 seq 16 cycle
1173 tr 1048 sethi 700416,
%g1
tl:0
PC_inorder:175564 seq 17 cycle
1174 tr 1048 ba
<0xfffffffffffffd50>,
tl:0
PC_inorder:174876 seq 18 cycle
1174 tr 1048 save %o6, <0xffffffffffffffc0>,
%pstate
tl:0
PC_inorder:174880 seq 19 cycle
1174 tr 1048 call
<0xffffffffff389088>,
tl:1
PC_inorder:16778368 seq 20 cycle
1475 tr 1048 rdpr %cleanwin
%l0
tl:1 PC_inorder:16778372 seq
21 cycle 1477 tr 1048 add %l0, 1,
%l0
tl:1 PC_inorder:16778376 seq
22 cycle 1479 tr 36 wrpr %l0,
%g0, %(null)
The two cores divaricated after the seq-19 instruction
call <0xffffffffff389088>, which later turned the
execution went into trap level tl:1.
I doubt about why the core-1 and core3 are stopped and why
they divaricated in trap-level 1.
Any help will be appreciated!
regards,
shuchang