Hi all,
I've discovered a bug in the in-order branch prediction system.
I noticed that changing the size of the branch predictor didn't affect
the number of taken/not taken branches at all!
The reason for this is that all BTB accesses are misses.
I figured out that the BTB actually never gets updated!
I dug into the code and saw that there are 2 squash-functions
BPredUnit::squash (in cpu/inorder/resources/bpred_unit.cc) with
different arguments.
One of them gets called by BranchPredictor::squash (in
cpu/inorder/resources/branc_predictor.cc), but in my opinion it should
be the 4-arguments one. This one will update the BTB as it should.
To clarify this I made a diff and attached it to this e-mail.
Please note that I added a condition around the BPredUnit::squash -
function with 4 arguments. If I didn't do this an assertion would fail
during the execution.
Although my patch is working, there might be a better way to solve this
problem. Again I looked more into it to figure out what's going on.
I noticed that sometimes an instruction with the same sequence number
calls the squash-function twice! This means that the squash function
tries more than once to remove the associated predHist[tid] object.
Since it's already removed the assertion fails..
I've attached a small extract from the trace produced by the hello world
program. This trace was generated without applying bpredPatch.
If we analyze this we will see that instruction with sn 218 calls squash
2 times! Once in the ID stage and once in the EX stage.
Actually a "return" instruction always causes a squash in the ID stage.
Is this squash necessary? From inorder/resources/fetch_seq_unit.cc we
can see that this also happens for other branch-instructions.
Hopefully this was a little bit clear and helped you guys!
Max
diff -r 410ea12b3ae6 src/cpu/inorder/resources/bpred_unit.cc
--- a/src/cpu/inorder/resources/bpred_unit.cc Tue Mar 16 09:20:06 2010 +0100
+++ b/src/cpu/inorder/resources/bpred_unit.cc Thu Mar 18 16:59:51 2010 +0100
@@ -149,7 +149,7 @@
// If so, get its target addr either from the BTB or the RAS.
// Save off record of branch stuff so the RAS can be fixed
// up once it's done.
-
+
using TheISA::MachInst;
bool pred_taken = false;
@@ -174,7 +174,7 @@
++condPredicted;
pred_taken = BPLookup(PC, bp_history);
-
+
DPRINTF(Resource, "BranchPred: [tid:%i]: Branch predictor predicted %i
"
"for PC %#x\n",
tid, pred_taken, inst->readPC());
@@ -274,6 +274,7 @@
DPRINTF(Resource, "BranchPred: [tid:%i]: Commiting branches until sequence"
"number %lli.\n", tid, done_sn);
+
while (!predHist[tid].empty() &&
predHist[tid].back().seqNum <= done_sn) {
// Update the branch predictor with the correct results.
@@ -290,7 +291,6 @@
BPredUnit::squash(const InstSeqNum &squashed_sn, ThreadID tid)
{
History &pred_hist = predHist[tid];
-
while (!pred_hist.empty() &&
pred_hist.front().seqNum > squashed_sn) {
if (pred_hist.front().usedRAS) {
@@ -343,6 +343,8 @@
// corresponding to the squash. In that case, don't bother trying to
// fix up the entry.
if (!pred_hist.empty()) {
+ if(pred_hist.front().seqNum==squashed_sn){
+
assert(pred_hist.front().seqNum == squashed_sn);
if (pred_hist.front().usedRAS) {
++RASIncorrect;
@@ -353,6 +355,7 @@
BTB.update(pred_hist.front().PC, corr_target, tid);
pred_hist.pop_front();
+ }
}
}
diff -r 410ea12b3ae6 src/cpu/inorder/resources/bpred_unit.hh
--- a/src/cpu/inorder/resources/bpred_unit.hh Tue Mar 16 09:20:06 2010 +0100
+++ b/src/cpu/inorder/resources/bpred_unit.hh Thu Mar 18 16:59:51 2010 +0100
@@ -250,6 +250,7 @@
Stats::Scalar usedRAS;
/** Stat for number of times the RAS is incorrect. */
Stats::Scalar RASIncorrect;
+
};
#endif // __CPU_INORDER_BPRED_UNIT_HH__
diff -r 410ea12b3ae6 src/cpu/inorder/resources/branch_predictor.cc
--- a/src/cpu/inorder/resources/branch_predictor.cc Tue Mar 16 09:20:06
2010 +0100
+++ b/src/cpu/inorder/resources/branch_predictor.cc Thu Mar 18 16:59:51
2010 +0100
@@ -56,6 +56,8 @@
.desc("Number of Branches Predicted As Not Taken (False).");
Resource::regStats();
+
+ branchPred.regStats();
}
void
@@ -140,7 +142,10 @@
InstSeqNum squash_seq_num, ThreadID tid)
{
DPRINTF(InOrderBPred, "Squashing...\n");
- branchPred.squash(squash_seq_num, tid);
+ Addr corr_targ=inst->readPredPC();
+ bool taken=inst->predTaken();
+ branchPred.squash(squash_seq_num,corr_targ,taken,tid);
+// branchPred.squash(squash_seq_num,tid);
}
void
342500: system.cpu.stage-0: Processing [tid:0]
342500: system.cpu.stage-0: [tid:0]: Not blocked, so attempting to run stage.
342500: system.cpu.stage-0: [tid:0]: [sn:218]: sending request to
system.cpu.Fetch-Seq-Unit.
342500: system.cpu.Fetch-Seq-Unit: [tid:0]: instruction requesting this
resource.
342500: system.cpu.Fetch-Seq-Unit: [tid:0]: Assigning [sn:218] to PC
0x1200070e4, NPC 0x1200070e8, NNPC 0x1200070ec
342500: global: system.cpu.Fetch-Seq-Unit [slot:1] done with request from
[sn:218] [tid:0].
342500: system.cpu.stage-0: [tid:0]: [sn:218] request to
system.cpu.Fetch-Seq-Unit completed.
342500: system.cpu.stage-0: [tid:0]: [sn:218]: sending request to
system.cpu.icache_port.
342500: system.cpu.icache_port: [tid:0]: [sn:218]: Address 0x1200070e4 added
to dependency list
342500: system.cpu.icache_port: [tid:0]: Fetch request from [sn:218] for addr
0x1200070e4
342500: system.cpu.icache_port: [tid:0]: instruction requesting this resource.
342500: system.cpu.icache_port: [tid:0]: [sn:218] virt. addr 0x1200070e4
translated to phys. addr:0x0070e4.
342500: system.cpu.icache_port: [tid:0]: Initiating fetch access to
system.cpu.icache_port for addr. 0x1200070e4
342500: system.cpu.icache_port: [tid:0] [sn:218] attempting to access cache
342500: system.cpu.icache_port: [tid:0] [sn:218] is now waiting for cache
response
342500: system.cpu.stage-0: [tid:0]: [sn:218] request to
system.cpu.icache_port completed.
342500: system.cpu.stage-0: [tid:0]: Attempting to send instructions to stage
1.
342500: system.cpu.stage-0: [tid:0] 1 slots available in next stage buffer.
342500: system.cpu.stage-0: [tid:0]: [sn:218]: being placed into index 0 of
stage buffer 0 queue.
342500: system.cpu.stage-0:
342500: system.cpu: [tid:0] [sn:214]: Removing Request [stage_num:4]
[res:system.cpu.RegFile-Manager] [slot:0] [completed:1].
342500: system.cpu: [tid:0] [sn:214]: Removing Request [stage_num:4]
[res:system.cpu.Graduation-Unit] [slot:6] [completed:1].
342500: system.cpu: [tid:0] [sn:216]: Removing Request [stage_num:2]
[res:system.cpu.RegFile-Manager] [slot:1] [completed:1].
342500: system.cpu: [tid:0] [sn:217]: Removing Request [stage_num:0]
[res:system.cpu.icache_port] [slot:0] [completed:1].
342500: system.cpu: [tid:0] [sn:217]: Removing Request [stage_num:1]
[res:system.cpu.Decode-Unit] [slot:0] [completed:1].
342500: system.cpu: [tid:0] [sn:217]: Removing Request [stage_num:1]
[res:system.cpu.Branch-Predictor] [slot:0] [completed:1].
342500: system.cpu: [tid:0] [sn:217]: Removing Request [stage_num:1]
[res:system.cpu.Fetch-Seq-Unit] [slot:0] [completed:1].
342500: system.cpu: [tid:0] [sn:218]: Removing Request [stage_num:0]
[res:system.cpu.Fetch-Seq-Unit] [slot:1] [completed:1].
342500: system.cpu: Removing instruction, [tid:0] [sn:214] PC 0x1200070d4
342500: system.cpu.RegDepMap: Removing [sn:214]'s entries from reg. dep. map.
342500: system.cpu: Scheduled CPU for next tick @ 343000.
342500: system.cpu.ResourcePool: [tid:0] Broadcasting [sn:214] graduation to
all resources.
342500: global: BranchPred: [tid:0]: Commiting branches until sequencenumber
214.
343000: system.cpu.icache_port: [tid:0]: [sn:218]: Waking from cache access to
addr. 0x1200070e4
343000: system.cpu.icache_port: [tid:0]: [sn:218]: Processing fetch access
343000: system.cpu:
InOrderCPU: Ticking main, InOrderCPU.
343000: system.cpu.stage-4: 1 insts available from stage buffer 3.
343000: system.cpu.stage-4: [tid:0]: Inserting [sn:215] into stage buffer.
343000: system.cpu.stage-4: Processing [tid:0]
343000: system.cpu.stage-4: [tid:0]: Not blocked, so attempting to run stage.
343000: system.cpu.stage-4: [tid:0]: Processing instruction [sn:215] with PC
0x1200070d8
343000: system.cpu.stage-4: [tid:0]: [sn:215]: sending request to
system.cpu.RegFile-Manager.
343000: system.cpu.RegFile-Manager: [tid:0]: [sn:215] requesting this resource.
343000: system.cpu.RegFile-Manager: [tid:0]: Flattening register idx 0
&Attempting to write to Register File.
343000: system.cpu.RegFile-Manager: [tid:0]: Writing Int. Result 0x153 to
register idx 0.
343000: system.cpu.RegDepMap: [tid:0]: Removing dependency entry on phys.
reg.0 for [sn:215].
343000: global: system.cpu.RegFile-Manager [slot:2] done with request from
[sn:215] [tid:0].
343000: system.cpu.stage-4: [tid:0]: [sn:215] request to
system.cpu.RegFile-Manager completed.
343000: system.cpu.stage-4: [tid:0]: [sn:215]: sending request to
system.cpu.Graduation-Unit.
343000: system.cpu.Graduation-Unit: [tid:0]: [sn:215] requesting this resource.
343000: system.cpu.Graduation-Unit: [tid:0] Graduating instruction [sn:215].
343000: system.cpu.ResourcePool: Scheduling Inst-Graduated Resource Pool Event
for tick 343000.
343000: system.cpu: Removing graduated instruction [tid:0] PC 0x1200070d8
[sn:215]
343000: system.cpu: Pushing instruction [tid:0] PC 0x1200070d8 [sn:215] to
remove list
343000: global: system.cpu.Graduation-Unit [slot:7] done with request from
[sn:215] [tid:0].
343000: system.cpu.stage-4: [tid:0]: [sn:215] request to
system.cpu.Graduation-Unit completed.
343000: system.cpu.stage-4: 0 left in stage 4 incoming buffer.
343000: system.cpu.stage-4: 1 available in stage 4 incoming buffer.
343000: system.cpu.stage-4:
343000: system.cpu.stage-3: 1 insts available from stage buffer 2.
343000: system.cpu.stage-3: [tid:0]: Inserting [sn:216] into stage buffer.
343000: system.cpu.stage-3: Processing [tid:0]
343000: system.cpu.stage-3: [tid:0]: Not blocked, so attempting to run stage.
343000: system.cpu.stage-3: [tid:0]: Processing instruction [sn:216] with PC
0x1200070dc
343000: system.cpu.stage-3: [tid:0]: Instruction [sn:216] with PC 0x1200070dc
needed no resources in stage 3.
343000: system.cpu.stage-3: [tid:0]: Attempting to send instructions to stage
4.
343000: system.cpu.stage-3: [tid:0] 1 slots available in next stage buffer.
343000: system.cpu.stage-3: [tid:0]: [sn:216]: being placed into index 0 of
stage buffer 3 queue.
343000: system.cpu.stage-3: 1 insts now available for stage 4.
343000: system.cpu.stage-3: 0 left in stage 3 incoming buffer.
343000: system.cpu.stage-3: 1 available in stage 3 incoming buffer.
343000: system.cpu.stage-3:
343000: system.cpu.stage-2: 1 insts available from stage buffer 1.
343000: system.cpu.stage-2: [tid:0]: Inserting [sn:217] into stage buffer.
343000: system.cpu.stage-2: Processing [tid:0]
343000: system.cpu.stage-2: [tid:0]: Not blocked, so attempting to run stage.
343000: system.cpu.stage-2: [tid:0]: Processing instruction [sn:217] with PC
0x1200070e0
343000: system.cpu.stage-2: [tid:0]: [sn:217]: sending request to
system.cpu.RegFile-Manager.
343000: system.cpu.RegFile-Manager: [tid:0]: [sn:217] requesting this resource.
343000: system.cpu.RegFile-Manager: [tid:0]: [sn:217] cannot execute
becausethere is non-speculative instruction [sn:216] has not graduated.
343000: system.cpu.stage-2: [tid:0]: [sn:217] request to
system.cpu.RegFile-Manager failed.
343000: system.cpu.stage-2: [sn:217] Ignoring Request Deletion, in resource
[slot:3].
343000: system.cpu.stage-2: [tid:0]: Blocking instructions from passing to
next stage.
343000: system.cpu.stage-2: 0 insts now available for stage 3.
343000: system.cpu.stage-2: 1 left in stage 2 incoming buffer.
343000: system.cpu.stage-2: 0 available in stage 2 incoming buffer.
343000: system.cpu.stage-2:
343000: system.cpu.stage-1: 1 insts available from stage buffer 0.
343000: system.cpu.stage-1: [tid:0]: Inserting [sn:218] into stage buffer.
343000: system.cpu.stage-1: Processing [tid:0]
343000: system.cpu.stage-1: [tid:0]: Not blocked, so attempting to run stage.
343000: system.cpu.stage-1: STALL: No room in stage 2 buffer.
343000: system.cpu.stage-1: [tid:0]: Blocking instructions from passing to
next stage.
343000: system.cpu.stage-1: 0 insts now available for stage 2.
343000: system.cpu.stage-1: 1 left in stage 1 incoming buffer.
343000: system.cpu.stage-1: 0 available in stage 1 incoming buffer.
343000: system.cpu.stage-1:
343000: system.cpu.stage-0: STALL: No room in stage 1 buffer.
343000: system.cpu.stage-0:
343000: system.cpu: [tid:0] [sn:215]: Removing Request [stage_num:4]
[res:system.cpu.RegFile-Manager] [slot:2] [completed:1].
343000: system.cpu: [tid:0] [sn:215]: Removing Request [stage_num:4]
[res:system.cpu.Graduation-Unit] [slot:7] [completed:1].
343000: system.cpu: Removing instruction, [tid:0] [sn:215] PC 0x1200070d8
343000: system.cpu.RegDepMap: Removing [sn:215]'s entries from reg. dep. map.
343000: system.cpu: Scheduled CPU for next tick @ 343500.
343000: system.cpu.ResourcePool: [tid:0] Broadcasting [sn:215] graduation to
all resources.
343000: global: BranchPred: [tid:0]: Commiting branches until sequencenumber
215.
343500: system.cpu:
InOrderCPU: Ticking main, InOrderCPU.
343500: system.cpu.stage-4: 1 insts available from stage buffer 3.
343500: system.cpu.stage-4: [tid:0]: Inserting [sn:216] into stage buffer.
343500: system.cpu.stage-4: Processing [tid:0]
343500: system.cpu.stage-4: [tid:0]: Not blocked, so attempting to run stage.
343500: system.cpu.stage-4: [tid:0]: Processing instruction [sn:216] with PC
0x1200070dc
343500: system.cpu.stage-4: [tid:0]: [sn:216]: sending request to
system.cpu.Execution-Unit.
343500: system.cpu.Execution-Unit: [tid:0]: [sn:216] requesting this resource.
343500: system.cpu.Execution-Unit: [tid:0] Executing [sn:216] [PC:0x1200070dc]
callsys.
343500: system.cpu: [tid:0] Executing syscall().
343500: system.cpu.ResourcePool: Binding dcache_port in Resource Pool.
343500: system.cpu.ResourcePool: dcache_port set to resource
system.cpu.dcache_port(#9) in Resource Pool.
343500: system.cpu.Execution-Unit: [tid:0]: [sn:216]: The result of execution
is 0x0.
343500: global: system.cpu.Execution-Unit [slot:0] done with request from
[sn:216] [tid:0].
343500: system.cpu.stage-4: [tid:0]: [sn:216] request to
system.cpu.Execution-Unit completed.
343500: system.cpu.stage-4: [tid:0]: [sn:216]: sending request to
system.cpu.Graduation-Unit.
343500: system.cpu.Graduation-Unit: [tid:0]: [sn:216] requesting this resource.
343500: system.cpu.Graduation-Unit: [tid:0] Graduating instruction [sn:216].
343500: system.cpu.Graduation-Unit: [tid:0] Non-speculative inst [sn:216]
graduated
343500: system.cpu.ResourcePool: Scheduling Inst-Graduated Resource Pool Event
for tick 343500.
343500: system.cpu: Removing graduated instruction [tid:0] PC 0x1200070dc
[sn:216]
343500: system.cpu: Pushing instruction [tid:0] PC 0x1200070dc [sn:216] to
remove list
343500: global: system.cpu.Graduation-Unit [slot:0] done with request from
[sn:216] [tid:0].
343500: system.cpu.stage-4: [tid:0]: [sn:216] request to
system.cpu.Graduation-Unit completed.
343500: system.cpu.stage-4: 0 left in stage 4 incoming buffer.
343500: system.cpu.stage-4: 1 available in stage 4 incoming buffer.
343500: system.cpu.stage-4:
343500: system.cpu.stage-3: 0 insts available from stage buffer 2.
343500: system.cpu.stage-3: Processing [tid:0]
343500: system.cpu.stage-3: [tid:0]: Not blocked, so attempting to run stage.
343500: system.cpu.stage-3: [tid:0]: Nothing to do, breaking out early.
343500: system.cpu.stage-3: 0 insts now available for stage 4.
343500: system.cpu.stage-3: 0 left in stage 3 incoming buffer.
343500: system.cpu.stage-3: 1 available in stage 3 incoming buffer.
343500: system.cpu.stage-3:
343500: system.cpu.stage-2: 0 insts available from stage buffer 1.
343500: system.cpu.stage-2: Processing [tid:0]
343500: system.cpu.stage-2: [tid:0]: Done blocking, switching to unblocking.
343500: system.cpu.stage-2: [tid:0]: Currently unblocking.
343500: system.cpu.stage-2: [tid:0]: Processing instruction [sn:217] with PC
0x1200070e0
343500: system.cpu.stage-2: [tid:0]: [sn:217]: sending request to
system.cpu.RegFile-Manager.
343500: system.cpu.RegFile-Manager: [tid:0]: [sn:217] requesting this resource
again.
343500: system.cpu.RegFile-Manager: [tid:0]: Attempting to read source
register idx 0 (reg #19).
343500: system.cpu.RegFile-Manager: [tid:0]: Reading Int Reg 19from Register
File:0.
343500: global: system.cpu.RegFile-Manager [slot:3] done with request from
[sn:217] [tid:0].
343500: system.cpu.stage-2: [tid:0]: [sn:217] request to
system.cpu.RegFile-Manager completed.
343500: system.cpu.stage-2: [tid:0]: [sn:217]: sending request to
system.cpu.Execution-Unit.
343500: system.cpu.Execution-Unit: [tid:0]: [sn:217] requesting this resource.
343500: system.cpu.Execution-Unit: [tid:0] Executing [sn:217] [PC:0x1200070e0]
bne.
343500: system.cpu.Execution-Unit: [tid:0]: [sn:217]: Prediction Correct.
343500: global: system.cpu.Execution-Unit [slot:0] done with request from
[sn:217] [tid:0].
343500: system.cpu.stage-2: [tid:0]: [sn:217] request to
system.cpu.Execution-Unit completed.
343500: system.cpu.stage-2: [tid:0]: Attempting to send instructions to stage
3.
343500: system.cpu.stage-2: [tid:0] 1 slots available in next stage buffer.
343500: system.cpu.stage-2: [tid:0]: [sn:217]: being placed into index 0 of
stage buffer 2 queue.
343500: system.cpu.stage-2: [tid:0]: Done unblocking.
343500: system.cpu.stage-2: 1 insts now available for stage 3.
343500: system.cpu.stage-2: 0 left in stage 2 incoming buffer.
343500: system.cpu.stage-2: 1 available in stage 2 incoming buffer.
343500: system.cpu.stage-2:
343500: system.cpu.stage-1: 0 insts available from stage buffer 0.
343500: system.cpu.stage-1: Processing [tid:0]
343500: system.cpu.stage-1: [tid:0]: Done blocking, switching to unblocking.
343500: system.cpu.stage-1: [tid:0]: Currently unblocking.
343500: system.cpu.stage-1: [tid:0]: Processing instruction [sn:218] with PC
0x1200070e4
343500: system.cpu.stage-1: [tid:0]: [sn:218]: sending request to
system.cpu.icache_port.
343500: system.cpu.icache_port: [tid:0]: [sn:218]: Updating the command for
this instruction
343500: system.cpu.icache_port: [tid:0]: Completing Fetch Access for [sn:218]
343500: system.cpu.icache_port: [tid:0]: Instruction [sn:218] is: ret
(r26)
343500: system.cpu.icache_port: [tid:0]: [sn:218] Address 0x1200070e4 removed
from dependency list
343500: global: system.cpu.icache_port [slot:1] done with request from
[sn:218] [tid:0].
343500: system.cpu.stage-1: [tid:0]: [sn:218] request to
system.cpu.icache_port completed.
343500: system.cpu.stage-1: [tid:0]: [sn:218]: sending request to
system.cpu.Decode-Unit.
343500: system.cpu.Decode-Unit: [tid:0]: [sn:218] requesting this resource.
343500: system.cpu.Decode-Unit: [tid:0]: Setting Destination Register(s) for
[sn:218].
343500: system.cpu.RegDepMap: Setting Output Dependencies for [sn:218] , ret
(dest. regs = 0).
343500: global: system.cpu.Decode-Unit [slot:0] done with request from
[sn:218] [tid:0].
343500: system.cpu.stage-1: [tid:0]: [sn:218] request to
system.cpu.Decode-Unit completed.
343500: system.cpu.stage-1: [tid:0]: [sn:218]: sending request to
system.cpu.Branch-Predictor.
343500: system.cpu.Branch-Predictor: [tid:0]: [sn:218] requesting this
resource.
343500: global: BranchPred: [tid:0] Unconditional control.
343500: global: BranchPred: [tid:0]: Instruction 0x1200070e4 is a return, RAS
predicted target: 0x1200003e8, RAS index: 3.
343500: global: [tid:0] predHist.size(): 2
343500: system.cpu.Branch-Predictor: [tid:0]: [sn:218]: Branch predicted true.
343500: system.cpu.Branch-Predictor: [tid:0]: [sn:218]: Predicted PC is
0x1200003e8.
343500: global: system.cpu.Branch-Predictor [slot:0] done with request from
[sn:218] [tid:0].
343500: system.cpu.stage-1: [tid:0]: [sn:218] request to
system.cpu.Branch-Predictor completed.
343500: system.cpu.stage-1: [tid:0]: [sn:218]: sending request to
system.cpu.Fetch-Seq-Unit.
343500: system.cpu.Fetch-Seq-Unit: [tid:0]: [sn:218] requesting this resource.
343500: system.cpu.Fetch-Seq-Unit: [tid:0] Setting up squash to start from
stage 1, after [sn:218].
343500: system.cpu.stage-1: Target being re-set to 0x1200003e8
343500: system.cpu.stage-1: [tid:0]: Squashing after [sn:218], due to [sn:218]
branch.
343500: system.cpu.ResourcePool: Scheduling Squash Resource Pool Event for
tick 343500.
343500: global: system.cpu.Fetch-Seq-Unit [slot:0] done with request from
[sn:218] [tid:0].
343500: system.cpu.stage-1: [tid:0]: [sn:218] request to
system.cpu.Fetch-Seq-Unit completed.
343500: system.cpu.stage-1: [tid:0]: Attempting to send instructions to stage
2.
343500: system.cpu.stage-1: [tid:0] 1 slots available in next stage buffer.
343500: system.cpu.stage-1: [tid:0]: [sn:218]: being placed into index 0 of
stage buffer 1 queue.
343500: system.cpu.stage-1: [tid:0]: Done unblocking.
343500: system.cpu.stage-1: 1 insts now available for stage 2.
343500: system.cpu.stage-1: 0 left in stage 1 incoming buffer.
343500: system.cpu.stage-1: 1 available in stage 1 incoming buffer.
343500: system.cpu.stage-1:
343500: system.cpu.stage-0: Processing [tid:0]
343500: system.cpu.stage-0: [tid:0]: Not blocked, so attempting to run stage.
343500: system.cpu.stage-0: [tid:0]: [sn:219]: sending request to
system.cpu.Fetch-Seq-Unit.
343500: system.cpu.Fetch-Seq-Unit: [tid:0]: instruction requesting this
resource.
343500: system.cpu.Fetch-Seq-Unit: [tid:0]: Assigning [sn:219] to PC
0x1200070e8, NPC 0x1200070ec, NNPC 0x1200070f0
343500: global: system.cpu.Fetch-Seq-Unit [slot:1] done with request from
[sn:219] [tid:0].
343500: system.cpu.stage-0: [tid:0]: [sn:219] request to
system.cpu.Fetch-Seq-Unit completed.
343500: system.cpu.stage-0: [tid:0]: [sn:219]: sending request to
system.cpu.icache_port.
343500: system.cpu.icache_port: [tid:0]: [sn:219]: Address 0x1200070e8 added
to dependency list
343500: system.cpu.icache_port: [tid:0]: Fetch request from [sn:219] for addr
0x1200070e8
343500: system.cpu.icache_port: [tid:0]: instruction requesting this resource.
343500: system.cpu.icache_port: [tid:0]: [sn:219] virt. addr 0x1200070e8
translated to phys. addr:0x0070e8.
343500: system.cpu.icache_port: [tid:0]: Initiating fetch access to
system.cpu.icache_port for addr. 0x1200070e8
343500: system.cpu.icache_port: [tid:0] [sn:219] attempting to access cache
343500: system.cpu.icache_port: [tid:0] [sn:219] is now waiting for cache
response
343500: system.cpu.stage-0: [tid:0]: [sn:219] request to
system.cpu.icache_port completed.
343500: system.cpu.stage-0: [tid:0]: Attempting to send instructions to stage
1.
343500: system.cpu.stage-0: [tid:0]: [sn:219]: squashed, skipping insertion
into stage 1 queue.
343500: system.cpu.stage-0:
343500: system.cpu: [tid:0] [sn:216]: Removing Request [stage_num:4]
[res:system.cpu.Execution-Unit] [slot:0] [completed:1].
343500: system.cpu: [tid:0] [sn:216]: Removing Request [stage_num:4]
[res:system.cpu.Graduation-Unit] [slot:0] [completed:1].
343500: system.cpu: [tid:0] [sn:217]: Removing Request [stage_num:2]
[res:system.cpu.RegFile-Manager] [slot:3] [completed:1].
343500: system.cpu: [tid:0] [sn:217]: Removing Request [stage_num:2]
[res:system.cpu.Execution-Unit] [slot:0] [completed:1].
343500: system.cpu: [tid:0] [sn:218]: Removing Request [stage_num:0]
[res:system.cpu.icache_port] [slot:1] [completed:1].
343500: system.cpu: [tid:0] [sn:218]: Removing Request [stage_num:1]
[res:system.cpu.Decode-Unit] [slot:0] [completed:1].
343500: system.cpu: [tid:0] [sn:218]: Removing Request [stage_num:1]
[res:system.cpu.Branch-Predictor] [slot:0] [completed:1].
343500: system.cpu: [tid:0] [sn:218]: Removing Request [stage_num:1]
[res:system.cpu.Fetch-Seq-Unit] [slot:0] [completed:1].
343500: system.cpu: [tid:0] [sn:219]: Removing Request [stage_num:0]
[res:system.cpu.Fetch-Seq-Unit] [slot:1] [completed:1].
343500: system.cpu: Removing instruction, [tid:0] [sn:216] PC 0x1200070dc
343500: system.cpu: Scheduled CPU for next tick @ 344000.
343500: system.cpu.ResourcePool: [tid:0] Broadcasting Squash All Event
starting w/stage 1 for all instructions above [sn:218].
343500: system.cpu.Fetch-Seq-Unit: [tid:0]: Updating due to squash from stage
1.
343500: system.cpu.Fetch-Seq-Unit: [tid:0]: Setting PC to 0x1200003e8.
343500: system.cpu.icache_port: [tid:0] Squashing request from [sn:219]
343500: system.cpu.icache_port: [tid:0] Request from [sn:219] squashed, but
still pending completion.
343500: system.cpu.icache_port: Squash of [tid:0] [sn:219], attempting to
remove addr. 0x1200070e8 dependencies.
343500: system.cpu.icache_port: [tid:0]: [sn:219] Address 0x1200070e8 removed
from dependency list
343500: system.cpu.Decode-Unit: [tid:0]: Updating due to squash from stage 1
after [sn:218].
343500: system.cpu.Branch-Predictor: Squashing...
343500: system.cpu.RegFile-Manager: [tid:0]: Updating Due To Squash After
[sn:218].
343500: system.cpu.RegFile-Manager: [tid:0]: Outstanding Read Seq Num Reset.
343500: system.cpu.RegFile-Manager: [tid:0]: Outstanding Write Seq Num Reset.
343500: system.cpu.ResourcePool: [tid:0] Broadcasting [sn:216] graduation to
all resources.
343500: global: BranchPred: [tid:0]: Commiting branches until sequencenumber
216.
344000: system.cpu.icache_port: Ignoring completion of squashed access,
[tid:0] [sn:219]
344000: global: system.cpu.icache_port [slot:2] done with request from
[sn:219] [tid:0].
344000: system.cpu:
InOrderCPU: Ticking main, InOrderCPU.
344000: system.cpu.stage-4: 0 insts available from stage buffer 3.
344000: system.cpu.stage-4: Processing [tid:0]
344000: system.cpu.stage-4: [tid:0]: Not blocked, so attempting to run stage.
344000: system.cpu.stage-4: [tid:0]: Nothing to do, breaking out early.
344000: system.cpu.stage-4: 0 left in stage 4 incoming buffer.
344000: system.cpu.stage-4: 1 available in stage 4 incoming buffer.
344000: system.cpu.stage-4:
344000: system.cpu.stage-3: 1 insts available from stage buffer 2.
344000: system.cpu.stage-3: [tid:0]: Inserting [sn:217] into stage buffer.
344000: system.cpu.stage-3: Processing [tid:0]
344000: system.cpu.stage-3: [tid:0]: Not blocked, so attempting to run stage.
344000: system.cpu.stage-3: [tid:0]: Processing instruction [sn:217] with PC
0x1200070e0
344000: system.cpu.stage-3: [tid:0]: Instruction [sn:217] with PC 0x1200070e0
needed no resources in stage 3.
344000: system.cpu.stage-3: [tid:0]: Attempting to send instructions to stage
4.
344000: system.cpu.stage-3: [tid:0] 1 slots available in next stage buffer.
344000: system.cpu.stage-3: [tid:0]: [sn:217]: being placed into index 0 of
stage buffer 3 queue.
344000: system.cpu.stage-3: 1 insts now available for stage 4.
344000: system.cpu.stage-3: 0 left in stage 3 incoming buffer.
344000: system.cpu.stage-3: 1 available in stage 3 incoming buffer.
344000: system.cpu.stage-3:
344000: system.cpu.stage-2: 1 insts available from stage buffer 1.
344000: system.cpu.stage-2: [tid:0]: Inserting [sn:218] into stage buffer.
344000: system.cpu.stage-2: Processing [tid:0]
344000: system.cpu.stage-2: [tid:0]: Not blocked, so attempting to run stage.
344000: system.cpu.stage-2: [tid:0]: Processing instruction [sn:218] with PC
0x1200070e4
344000: system.cpu.stage-2: [tid:0]: [sn:218]: sending request to
system.cpu.RegFile-Manager.
344000: system.cpu.RegFile-Manager: [tid:0]: [sn:218] requesting this resource.
344000: system.cpu.RegFile-Manager: [tid:0]: Attempting to read source
register idx 0 (reg #26).
344000: system.cpu.RegFile-Manager: [tid:0]: Reading Int Reg 26from Register
File:4831839204.
344000: global: system.cpu.RegFile-Manager [slot:4] done with request from
[sn:218] [tid:0].
344000: system.cpu.stage-2: [tid:0]: [sn:218] request to
system.cpu.RegFile-Manager completed.
344000: system.cpu.stage-2: [tid:0]: [sn:218]: sending request to
system.cpu.Execution-Unit.
344000: system.cpu.Execution-Unit: [tid:0]: [sn:218] requesting this resource.
344000: system.cpu.Execution-Unit: [tid:0] Executing [sn:218] [PC:0x1200070e4]
ret.
344000: system.cpu.Execution-Unit: [tid:0] Redirecting fetch to 0x1200003e4.
344000: system.cpu.Execution-Unit: [tid:0] Squashing will start from stage 2.
344000: system.cpu.stage-2: Target being re-set to 0x1200003e4
344000: system.cpu.stage-2: [tid:0]: Squashing after [sn:218], due to [sn:218]
branch.
344000: system.cpu.ResourcePool: Scheduling Squash Resource Pool Event for
tick 344000.
344000: global: system.cpu.Execution-Unit [slot:0] done with request from
[sn:218] [tid:0].
344000: system.cpu.stage-2: [tid:0]: [sn:218] request to
system.cpu.Execution-Unit completed.
344000: system.cpu.stage-2: [tid:0]: Attempting to send instructions to stage
3.
344000: system.cpu.stage-2: [tid:0] 1 slots available in next stage buffer.
344000: system.cpu.stage-2: [tid:0]: [sn:218]: being placed into index 0 of
stage buffer 2 queue.
344000: system.cpu.stage-2: 1 insts now available for stage 3.
344000: system.cpu.stage-2: 0 left in stage 2 incoming buffer.
344000: system.cpu.stage-2: 1 available in stage 2 incoming buffer.
344000: system.cpu.stage-2:
344000: system.cpu.stage-1: 0 insts available from stage buffer 0.
344000: system.cpu.stage-1: Processing [tid:0]
344000: system.cpu.stage-1: [tid:0]: Squashing instructions due to squash from
stage 1.
344000: system.cpu.stage-1: [tid:0]: Removing instructions from incoming stage
queue.
344000: system.cpu.stage-1: [tid:0]: Removing instructions from incoming stage
skidbuffer.
344000: system.cpu.stage-1: [tid:0]: Done squashing, switching to running.
344000: system.cpu.stage-1: [tid:0]: Not blocked, so attempting to run stage.
344000: system.cpu.stage-1: [tid:0]: Nothing to do, breaking out early.
344000: system.cpu.stage-1: 0 insts now available for stage 2.
344000: system.cpu.stage-1: 0 left in stage 1 incoming buffer.
344000: system.cpu.stage-1: 1 available in stage 1 incoming buffer.
344000: system.cpu.stage-1:
344000: system.cpu.stage-0: [tid:0]: Squashing instructions due to squash from
stage 1.
344000: system.cpu.stage-0: Removing instructions from stage instruction list.
344000: system.cpu: Squashing instructions from CPU instruction list that are
from [tid:0] and above [sn:218] (end=219).
344000: system.cpu: Squashing instruction, [tid:0] [sn:219] PC 0x1200070e8
344000: system.cpu: Pushing instruction [tid:0] PC 0x1200070e8 [sn:219] to
remove list
344000: system.cpu.stage-0: Processing [tid:0]
344000: system.cpu.stage-0: [tid:0]: Not blocked, so attempting to run stage.
344000: system.cpu.stage-0: [tid:0]: [sn:220]: sending request to
system.cpu.Fetch-Seq-Unit.
344000: system.cpu.Fetch-Seq-Unit: [tid:0]: instruction requesting this
resource.
344000: system.cpu.Fetch-Seq-Unit: [tid:0]: Assigning [sn:220] to PC
0x1200003e8, NPC 0x1200003ec, NNPC 0x1200003f0
344000: global: system.cpu.Fetch-Seq-Unit [slot:0] done with request from
[sn:220] [tid:0].
344000: system.cpu.stage-0: [tid:0]: [sn:220] request to
system.cpu.Fetch-Seq-Unit completed.
344000: system.cpu.stage-0: [tid:0]: [sn:220]: sending request to
system.cpu.icache_port.
344000: system.cpu.icache_port: [tid:0]: [sn:220]: Address 0x1200003e8 added
to dependency list
344000: system.cpu.icache_port: [tid:0]: Fetch request from [sn:220] for addr
0x1200003e8
344000: system.cpu.icache_port: [tid:0]: instruction requesting this resource.
344000: system.cpu.icache_port: [tid:0]: [sn:220] virt. addr 0x1200003e8
translated to phys. addr:0x0003e8.
344000: system.cpu.icache_port: [tid:0]: Initiating fetch access to
system.cpu.icache_port for addr. 0x1200003e8
344000: system.cpu.icache_port: [tid:0] [sn:220] attempting to access cache
344000: system.cpu.icache_port: [tid:0] [sn:220] is now waiting for cache
response
344000: system.cpu.stage-0: [tid:0]: [sn:220] request to
system.cpu.icache_port completed.
344000: system.cpu.stage-0: [tid:0]: Attempting to send instructions to stage
1.
344000: system.cpu.stage-0: [tid:0]: [sn:220]: squashed, skipping insertion
into stage 1 queue.
344000: system.cpu.stage-0:
344000: system.cpu: [tid:0] [sn:219]: Removing Request [stage_num:0]
[res:system.cpu.icache_port] [slot:2] [completed:1].
344000: system.cpu: [tid:0] [sn:218]: Removing Request [stage_num:2]
[res:system.cpu.RegFile-Manager] [slot:4] [completed:1].
344000: system.cpu: [tid:0] [sn:218]: Removing Request [stage_num:2]
[res:system.cpu.Execution-Unit] [slot:0] [completed:1].
344000: system.cpu: [tid:0] [sn:220]: Removing Request [stage_num:0]
[res:system.cpu.Fetch-Seq-Unit] [slot:0] [completed:1].
344000: system.cpu: Removing instruction, [tid:0] [sn:219] PC 0x1200070e8
344000: system.cpu: Scheduled CPU for next tick @ 344500.
344000: system.cpu.ResourcePool: [tid:0] Broadcasting Squash All Event
starting w/stage 2 for all instructions above [sn:218].
344000: system.cpu.Fetch-Seq-Unit: [tid:0]: Updating due to squash from stage
2.
344000: system.cpu.Fetch-Seq-Unit: [tid:0]: Setting PC to 0x1200003e4.
344000: system.cpu.icache_port: [tid:0] Squashing request from [sn:220]
344000: system.cpu.icache_port: [tid:0] Request from [sn:220] squashed, but
still pending completion.
344000: system.cpu.icache_port: Squash of [tid:0] [sn:220], attempting to
remove addr. 0x1200003e8 dependencies.
344000: system.cpu.icache_port: [tid:0]: [sn:220] Address 0x1200003e8 removed
from dependency list
344000: system.cpu.Decode-Unit: [tid:0]: Updating due to squash from stage 2
after [sn:218].
344000: system.cpu.Branch-Predictor: Squashing...
344000: system.cpu.RegFile-Manager: [tid:0]: Updating Due To Squash After
[sn:218].
344000: system.cpu.RegFile-Manager: [tid:0]: Outstanding Read Seq Num Reset.
344000: system.cpu.RegFile-Manager: [tid:0]: Outstanding Write Seq Num Reset.
344500: system.cpu.icache_port: Ignoring completion of squashed access,
[tid:0] [sn:220]
344500: global: system.cpu.icache_port [slot:3] done with request from
[sn:220] [tid:0].
344500: system.cpu:
InOrderCPU: Ticking main, InOrderCPU.
344500: system.cpu.stage-4: 1 insts available from stage buffer 3.
344500: system.cpu.stage-4: [tid:0]: Inserting [sn:217] into stage buffer.
344500: system.cpu.stage-4: Processing [tid:0]
344500: system.cpu.stage-4: [tid:0]: Not blocked, so attempting to run stage.
344500: system.cpu.stage-4: [tid:0]: Processing instruction [sn:217] with PC
0x1200070e0
344500: system.cpu.stage-4: [tid:0]: [sn:217]: sending request to
system.cpu.Graduation-Unit.
344500: system.cpu.Graduation-Unit: [tid:0]: [sn:217] requesting this resource.
344500: system.cpu.Graduation-Unit: [tid:0] Graduating instruction [sn:217].
344500: system.cpu.ResourcePool: Scheduling Inst-Graduated Resource Pool Event
for tick 344500.
344500: system.cpu: Removing graduated instruction [tid:0] PC 0x1200070e0
[sn:217]
344500: system.cpu: Pushing instruction [tid:0] PC 0x1200070e0 [sn:217] to
remove list
344500: global: system.cpu.Graduation-Unit [slot:1] done with request from
[sn:217] [tid:0].
344500: system.cpu.stage-4: [tid:0]: [sn:217] request to
system.cpu.Graduation-Unit completed.
344500: system.cpu.stage-4: 0 left in stage 4 incoming buffer.
344500: system.cpu.stage-4: 1 available in stage 4 incoming buffer.
344500: system.cpu.stage-4:
344500: system.cpu.stage-3: 1 insts available from stage buffer 2.
344500: system.cpu.stage-3: [tid:0]: Inserting [sn:218] into stage buffer.
344500: system.cpu.stage-3: Processing [tid:0]
344500: system.cpu.stage-3: [tid:0]: Not blocked, so attempting to run stage.
344500: system.cpu.stage-3: [tid:0]: Processing instruction [sn:218] with PC
0x1200070e4
344500: system.cpu.stage-3: [tid:0]: Instruction [sn:218] with PC 0x1200070e4
needed no resources in stage 3.
344500: system.cpu.stage-3: [tid:0]: Attempting to send instructions to stage
4.
344500: system.cpu.stage-3: [tid:0] 1 slots available in next stage buffer.
344500: system.cpu.stage-3: [tid:0]: [sn:218]: being placed into index 0 of
stage buffer 3 queue.
344500: system.cpu.stage-3: 1 insts now available for stage 4.
344500: system.cpu.stage-3: 0 left in stage 3 incoming buffer.
344500: system.cpu.stage-3: 1 available in stage 3 incoming buffer.
344500: system.cpu.stage-3:
344500: system.cpu.stage-2: 0 insts available from stage buffer 1.
344500: system.cpu.stage-2: Processing [tid:0]
344500: system.cpu.stage-2: [tid:0]: Squashing instructions due to squash from
stage 2.
344500: system.cpu.stage-2: [tid:0]: Removing instructions from incoming stage
queue.
344500: system.cpu.stage-2: [tid:0]: Removing instructions from incoming stage
skidbuffer.
344500: system.cpu.stage-2: [tid:0]: Done squashing, switching to running.
344500: system.cpu.stage-2: [tid:0]: Not blocked, so attempting to run stage.
344500: system.cpu.stage-2: [tid:0]: Nothing to do, breaking out early.
344500: system.cpu.stage-2: 0 insts now available for stage 3.
344500: system.cpu.stage-2: 0 left in stage 2 incoming buffer.
344500: system.cpu.stage-2: 1 available in stage 2 incoming buffer.
344500: system.cpu.stage-2:
344500: system.cpu.stage-1: 0 insts available from stage buffer 0.
344500: system.cpu.stage-1: Processing [tid:0]
344500: system.cpu.stage-1: [tid:0]: Squashing instructions due to squash from
stage 2.
344500: system.cpu.stage-1: [tid:0]: Removing instructions from incoming stage
queue.
344500: system.cpu.stage-1: [tid:0]: Removing instructions from incoming stage
skidbuffer.
344500: system.cpu.stage-1: [tid:0]: Done squashing, switching to running.
344500: system.cpu.stage-1: [tid:0]: Not blocked, so attempting to run stage.
344500: system.cpu.stage-1: [tid:0]: Nothing to do, breaking out early.
344500: system.cpu.stage-1: 0 insts now available for stage 2.
344500: system.cpu.stage-1: 0 left in stage 1 incoming buffer.
344500: system.cpu.stage-1: 1 available in stage 1 incoming buffer.
344500: system.cpu.stage-1:
344500: system.cpu.stage-0: [tid:0]: Squashing instructions due to squash from
stage 2.
344500: system.cpu.stage-0: Removing instructions from stage instruction list.
344500: system.cpu: Squashing instructions from CPU instruction list that are
from [tid:0] and above [sn:218] (end=220).
344500: system.cpu: Squashing instruction, [tid:0] [sn:220] PC 0x1200003e8
344500: system.cpu: Pushing instruction [tid:0] PC 0x1200003e8 [sn:220] to
remove list
344500: system.cpu.stage-0: Processing [tid:0]
344500: system.cpu.stage-0: [tid:0]: Not blocked, so attempting to run stage.
344500: system.cpu.stage-0: [tid:0]: [sn:221]: sending request to
system.cpu.Fetch-Seq-Unit.
344500: system.cpu.Fetch-Seq-Unit: [tid:0]: instruction requesting this
resource.
344500: system.cpu.Fetch-Seq-Unit: [tid:0]: Assigning [sn:221] to PC
0x1200003e4, NPC 0x1200003e8, NNPC 0x1200003ec
344500: global: system.cpu.Fetch-Seq-Unit [slot:1] done with request from
[sn:221] [tid:0].
344500: system.cpu.stage-0: [tid:0]: [sn:221] request to
system.cpu.Fetch-Seq-Unit completed.
344500: system.cpu.stage-0: [tid:0]: [sn:221]: sending request to
system.cpu.icache_port.
344500: system.cpu.icache_port: [tid:0]: [sn:221]: Address 0x1200003e4 added
to dependency list
344500: system.cpu.icache_port: [tid:0]: Fetch request from [sn:221] for addr
0x1200003e4
344500: system.cpu.icache_port: [tid:0]: instruction requesting this resource.
344500: system.cpu.icache_port: [tid:0]: [sn:221] virt. addr 0x1200003e4
translated to phys. addr:0x0003e4.
344500: system.cpu.icache_port: [tid:0]: Initiating fetch access to
system.cpu.icache_port for addr. 0x1200003e4
344500: system.cpu.icache_port: [tid:0] [sn:221] attempting to access cache
344500: system.cpu.icache_port: [tid:0] [sn:221] is now waiting for cache
response
344500: system.cpu.stage-0: [tid:0]: [sn:221] request to
system.cpu.icache_port completed.
344500: system.cpu.stage-0: [tid:0]: Attempting to send instructions to stage
1.
344500: system.cpu.stage-0: [tid:0] 1 slots available in next stage buffer.
344500: system.cpu.stage-0: [tid:0]: [sn:221]: being placed into index 0 of
stage buffer 0 queue.
344500: system.cpu.stage-0:
344500: system.cpu: [tid:0] [sn:220]: Removing Request [stage_num:0]
[res:system.cpu.icache_port] [slot:3] [completed:1].
344500: system.cpu: [tid:0] [sn:217]: Removing Request [stage_num:4]
[res:system.cpu.Graduation-Unit] [slot:1] [completed:1].
344500: system.cpu: [tid:0] [sn:221]: Removing Request [stage_num:0]
[res:system.cpu.Fetch-Seq-Unit] [slot:1] [completed:1].
344500: system.cpu: Removing instruction, [tid:0] [sn:217] PC 0x1200070e0
344500: system.cpu: Removing instruction, [tid:0] [sn:220] PC 0x1200003e8
344500: system.cpu: Scheduled CPU for next tick @ 345000.
344500: system.cpu.ResourcePool: [tid:0] Broadcasting [sn:217] graduation to
all resources.
344500: global: BranchPred: [tid:0]: Commiting branches until sequencenumber
217.
345000: system.cpu.icache_port: [tid:0]: [sn:221]: Waking from cache access to
addr. 0x1200003e4
345000: system.cpu.icache_port: [tid:0]: [sn:221]: Processing fetch access
345000: system.cpu:
InOrderCPU: Ticking main, InOrderCPU.
345000: system.cpu.stage-4: 1 insts available from stage buffer 3.
345000: system.cpu.stage-4: [tid:0]: Inserting [sn:218] into stage buffer.
345000: system.cpu.stage-4: Processing [tid:0]
345000: system.cpu.stage-4: [tid:0]: Not blocked, so attempting to run stage.
345000: system.cpu.stage-4: [tid:0]: Processing instruction [sn:218] with PC
0x1200070e4
345000: system.cpu.stage-4: [tid:0]: [sn:218]: sending request to
system.cpu.Graduation-Unit.
345000: system.cpu.Graduation-Unit: [tid:0]: [sn:218] requesting this resource.
345000: system.cpu.Graduation-Unit: [tid:0] Graduating instruction [sn:218].
345000: system.cpu.ResourcePool: Scheduling Inst-Graduated Resource Pool Event
for tick 345000.
345000: system.cpu: Removing graduated instruction [tid:0] PC 0x1200070e4
[sn:218]
345000: system.cpu: Pushing instruction [tid:0] PC 0x1200070e4 [sn:218] to
remove list
345000: global: system.cpu.Graduation-Unit [slot:2] done with request from
[sn:218] [tid:0].
345000: system.cpu.stage-4: [tid:0]: [sn:218] request to
system.cpu.Graduation-Unit completed.
345000: system.cpu.stage-4: 0 left in stage 4 incoming buffer.
345000: system.cpu.stage-4: 1 available in stage 4 incoming buffer.
345000: system.cpu.stage-4:
345000: system.cpu.stage-3: 0 insts available from stage buffer 2.
345000: system.cpu.stage-3: Processing [tid:0]
345000: system.cpu.stage-3: [tid:0]: Not blocked, so attempting to run stage.
345000: system.cpu.stage-3: [tid:0]: Nothing to do, breaking out early.
345000: system.cpu.stage-3: 0 insts now available for stage 4.
345000: system.cpu.stage-3: 0 left in stage 3 incoming buffer.
345000: system.cpu.stage-3: 1 available in stage 3 incoming buffer.
345000: system.cpu.stage-3:
345000: system.cpu.stage-2: 0 insts available from stage buffer 1.
345000: system.cpu.stage-2: Processing [tid:0]
345000: system.cpu.stage-2: [tid:0]: Not blocked, so attempting to run stage.
345000: system.cpu.stage-2: [tid:0]: Nothing to do, breaking out early.
345000: system.cpu.stage-2: 0 insts now available for stage 3.
345000: system.cpu.stage-2: 0 left in stage 2 incoming buffer.
345000: system.cpu.stage-2: 1 available in stage 2 incoming buffer.
345000: system.cpu.stage-2:
345000: system.cpu.stage-1: 1 insts available from stage buffer 0.
345000: system.cpu.stage-1: [tid:0]: Inserting [sn:221] into stage buffer.
345000: system.cpu.stage-1: Processing [tid:0]
345000: system.cpu.stage-1: [tid:0]: Not blocked, so attempting to run stage.
345000: system.cpu.stage-1: [tid:0]: Processing instruction [sn:221] with PC
0x1200003e4
345000: system.cpu.stage-1: [tid:0]: [sn:221]: sending request to
system.cpu.icache_port.
345000: system.cpu.icache_port: [tid:0]: [sn:221]: Updating the command for
this instruction
345000: system.cpu.icache_port: [tid:0]: Completing Fetch Access for [sn:221]
345000: system.cpu.icache_port: [tid:0]: Instruction [sn:221] is: ldah
r29,9(r26)
345000: system.cpu.icache_port: [tid:0]: [sn:221] Address 0x1200003e4 removed
from dependency list
345000: global: system.cpu.icache_port [slot:4] done with request from
[sn:221] [tid:0].
345000: system.cpu.stage-1: [tid:0]: [sn:221] request to
system.cpu.icache_port completed.
345000: system.cpu.stage-1: [tid:0]: [sn:221]: sending request to
system.cpu.Decode-Unit.
345000: system.cpu.Decode-Unit: [tid:0]: [sn:221] requesting this resource.
345000: system.cpu.Decode-Unit: [tid:0]: Setting Destination Register(s) for
[sn:221].
345000: system.cpu.RegDepMap: Setting Output Dependencies for [sn:221] , ldah
(dest. regs = 1).
345000: system.cpu.RegDepMap: Inserting [sn:221] onto dep. list for reg. idx
29.
345000: global: system.cpu.Decode-Unit [slot:0] done with request from
[sn:221] [tid:0].
345000: system.cpu.stage-1: [tid:0]: [sn:221] request to
system.cpu.Decode-Unit completed.
345000: system.cpu.stage-1: [tid:0]: [sn:221]: sending request to
system.cpu.Branch-Predictor.
345000: system.cpu.Branch-Predictor: [tid:0]: [sn:221] requesting this
resource.
345000: system.cpu.Branch-Predictor: [tid:0]: Ignoring [sn:221] because this
isn't a control instruction.
345000: global: system.cpu.Branch-Predictor [slot:0] done with request from
[sn:221] [tid:0].
345000: system.cpu.stage-1: [tid:0]: [sn:221] request to
system.cpu.Branch-Predictor completed.
345000: system.cpu.stage-1: [tid:0]: [sn:221]: sending request to
system.cpu.Fetch-Seq-Unit.
345000: system.cpu.Fetch-Seq-Unit: [tid:0]: [sn:221] requesting this resource.
345000: system.cpu.Fetch-Seq-Unit: [tid:0]: [sn:221]: Ignoring branch target
update since then is not a control instruction.
345000: global: system.cpu.Fetch-Seq-Unit [slot:0] done with request from
[sn:221] [tid:0].
345000: system.cpu.stage-1: [tid:0]: [sn:221] request to
system.cpu.Fetch-Seq-Unit completed.
345000: system.cpu.stage-1: [tid:0]: Attempting to send instructions to stage
2.
345000: system.cpu.stage-1: [tid:0] 1 slots available in next stage buffer.
345000: system.cpu.stage-1: [tid:0]: [sn:221]: being placed into index 0 of
stage buffer 1 queue.
345000: system.cpu.stage-1: 1 insts now available for stage 2.
345000: system.cpu.stage-1: 0 left in stage 1 incoming buffer.
345000: system.cpu.stage-1: 1 available in stage 1 incoming buffer.
345000: system.cpu.stage-1:
345000: system.cpu.stage-0: Processing [tid:0]
345000: system.cpu.stage-0: [tid:0]: Not blocked, so attempting to run stage.
345000: system.cpu.stage-0: [tid:0]: [sn:222]: sending request to
system.cpu.Fetch-Seq-Unit.
345000: system.cpu.Fetch-Seq-Unit: [tid:0]: instruction requesting this
resource.
345000: system.cpu.Fetch-Seq-Unit: [tid:0]: Assigning [sn:222] to PC
0x1200003e8, NPC 0x1200003ec, NNPC 0x1200003f0
345000: global: system.cpu.Fetch-Seq-Unit [slot:1] done with request from
[sn:222] [tid:0].
345000: system.cpu.stage-0: [tid:0]: [sn:222] request to
system.cpu.Fetch-Seq-Unit completed.
345000: system.cpu.stage-0: [tid:0]: [sn:222]: sending request to
system.cpu.icache_port.
345000: system.cpu.icache_port: [tid:0]: [sn:222]: Address 0x1200003e8 added
to dependency list
345000: system.cpu.icache_port: [tid:0]: Fetch request from [sn:222] for addr
0x1200003e8
345000: system.cpu.icache_port: [tid:0]: instruction requesting this resource.
345000: system.cpu.icache_port: [tid:0]: [sn:222] virt. addr 0x1200003e8
translated to phys. addr:0x0003e8.
345000: system.cpu.icache_port: [tid:0]: Initiating fetch access to
system.cpu.icache_port for addr. 0x1200003e8
345000: system.cpu.icache_port: [tid:0] [sn:222] attempting to access cache
345000: system.cpu.icache_port: [tid:0] [sn:222] is now waiting for cache
response
345000: system.cpu.stage-0: [tid:0]: [sn:222] request to
system.cpu.icache_port completed.
345000: system.cpu.stage-0: [tid:0]: Attempting to send instructions to stage
1.
345000: system.cpu.stage-0: [tid:0] 1 slots available in next stage buffer.
345000: system.cpu.stage-0: [tid:0]: [sn:222]: being placed into index 0 of
stage buffer 0 queue.
345000: system.cpu.stage-0:
345000: system.cpu: [tid:0] [sn:218]: Removing Request [stage_num:4]
[res:system.cpu.Graduation-Unit] [slot:2] [completed:1].
345000: system.cpu: [tid:0] [sn:221]: Removing Request [stage_num:0]
[res:system.cpu.icache_port] [slot:4] [completed:1].
345000: system.cpu: [tid:0] [sn:221]: Removing Request [stage_num:1]
[res:system.cpu.Decode-Unit] [slot:0] [completed:1].
345000: system.cpu: [tid:0] [sn:221]: Removing Request [stage_num:1]
[res:system.cpu.Branch-Predictor] [slot:0] [completed:1].
345000: system.cpu: [tid:0] [sn:221]: Removing Request [stage_num:1]
[res:system.cpu.Fetch-Seq-Unit] [slot:0] [completed:1].
345000: system.cpu: [tid:0] [sn:222]: Removing Request [stage_num:0]
[res:system.cpu.Fetch-Seq-Unit] [slot:1] [completed:1].
345000: system.cpu: Removing instruction, [tid:0] [sn:218] PC 0x1200070e4
345000: system.cpu: Scheduled CPU for next tick @ 345500.
345000: system.cpu.ResourcePool: [tid:0] Broadcasting [sn:218] graduation to
all resources.
345000: global: BranchPred: [tid:0]: Commiting branches until sequencenumber
218.
345500: system.cpu.icache_port: [tid:0]: [sn:222]: Waking from cache access to
addr. 0x1200003e8
345500: system.cpu.icache_port: [tid:0]: [sn:222]: Processing fetch access
345500: system.cpu:
InOrderCPU: Ticking main, InOrderCPU.
345500: system.cpu.stage-4: 0 insts available from stage buffer 3.
345500: system.cpu.stage-4: Processing [tid:0]
345500: system.cpu.stage-4: [tid:0]: Not blocked, so attempting to run stage.
345500: system.cpu.stage-4: [tid:0]: Nothing to do, breaking out early.
345500: system.cpu.stage-4: 0 left in stage 4 incoming buffer.
345500: system.cpu.stage-4: 1 available in stage 4 incoming buffer.
345500: system.cpu.stage-4:
345500: system.cpu.stage-3: 0 insts available from stage buffer 2.
345500: system.cpu.stage-3: Processing [tid:0]
345500: system.cpu.stage-3: [tid:0]: Not blocked, so attempting to run stage.
345500: system.cpu.stage-3: [tid:0]: Nothing to do, breaking out early.
345500: system.cpu.stage-3: 0 insts now available for stage 4.
345500: system.cpu.stage-3: 0 left in stage 3 incoming buffer.
345500: system.cpu.stage-3: 1 available in stage 3 incoming buffer.
345500: system.cpu.stage-3:
345500: system.cpu.stage-2: 1 insts available from stage buffer 1.
345500: system.cpu.stage-2: [tid:0]: Inserting [sn:221] into stage buffer.
345500: system.cpu.stage-2: Processing [tid:0]
345500: system.cpu.stage-2: [tid:0]: Not blocked, so attempting to run stage.
345500: system.cpu.stage-2: [tid:0]: Processing instruction [sn:221] with PC
0x1200003e4
345500: system.cpu.stage-2: [tid:0]: [sn:221]: sending request to
system.cpu.RegFile-Manager.
345500: system.cpu.RegFile-Manager: [tid:0]: [sn:221] requesting this resource.
345500: system.cpu.RegFile-Manager: [tid:0]: Attempting to read source
register idx 0 (reg #26).
345500: system.cpu.RegFile-Manager: [tid:0]: Reading Int Reg 26from Register
File:4831839204.
345500: global: system.cpu.RegFile-Manager [slot:5] done with request from
[sn:221] [tid:0].
345500: system.cpu.stage-2: [tid:0]: [sn:221] request to
system.cpu.RegFile-Manager completed.
345500: system.cpu.stage-2: [tid:0]: [sn:221]: sending request to
system.cpu.Execution-Unit.
345500: system.cpu.Execution-Unit: [tid:0]: [sn:221] requesting this resource.
345500: system.cpu.Execution-Unit: [tid:0] Executing [sn:221] [PC:0x1200003e4]
ldah.
345500: system.cpu.Execution-Unit: [tid:0]: [sn:221]: The result of execution
is 0x4.83243e+09.
345500: global: system.cpu.Execution-Unit [slot:0] done with request from
[sn:221] [tid:0].
345500: system.cpu.stage-2: [tid:0]: [sn:221] request to
system.cpu.Execution-Unit completed.
345500: system.cpu.stage-2: [tid:0]: Attempting to send instructions to stage
3.
345500: system.cpu.stage-2: [tid:0] 1 slots available in next stage buffer.
345500: system.cpu.stage-2: [tid:0]: [sn:221]: being placed into index 0 of
stage buffer 2 queue.
345500: system.cpu.stage-2: 1 insts now available for stage 3.
345500: system.cpu.stage-2: 0 left in stage 2 incoming buffer.
345500: system.cpu.stage-2: 1 available in stage 2 incoming buffer.
345500: system.cpu.stage-2:
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users