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

Reply via email to