changeset b4e30b30f695 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=b4e30b30f695
description:
        InOrder didnt have all it's params set to a default value, which is now 
required for M5 objects; Also, a # of values need to be reset to 0 (or the 
appropriate value) before we assume they are OK for use.

diffstat:

5 files changed, 24 insertions(+), 31 deletions(-)
src/cpu/inorder/InOrderCPU.py              |    5 +---
src/cpu/inorder/comm.hh                    |    8 +++++++
src/cpu/inorder/inorder_dyn_inst.cc        |    5 +++-
src/cpu/inorder/pipeline_stage.cc          |   32 ++++------------------------
src/cpu/inorder/resources/mult_div_unit.cc |    5 ++++

diffs (137 lines):

diff -r 4842a7d78634 -r b4e30b30f695 src/cpu/inorder/InOrderCPU.py
--- a/src/cpu/inorder/InOrderCPU.py     Wed Mar 04 13:16:49 2009 -0500
+++ b/src/cpu/inorder/InOrderCPU.py     Wed Mar 04 13:17:05 2009 -0500
@@ -34,9 +34,8 @@
 class InOrderCPU(BaseCPU):
     type = 'InOrderCPU'
     activity = Param.Unsigned(0, "Initial count")
-    numThreads = Param.Unsigned(1, "number of HW thread contexts")
 
-    cachePorts = Param.Unsigned("Cache Ports")
+    cachePorts = Param.Unsigned(2, "Cache Ports")
     stageWidth = Param.Unsigned(1, "Stage width")
 
     fetchMemPort = Param.String("icache_port" , "Name of Memory Port to get 
instructions from")
@@ -66,7 +65,7 @@
     functionTraceStart = Param.Tick(0, "Cycle to start function trace")
     stageTracing = Param.Bool(False, "Enable tracing of each stage in CPU")
 
-    memBlockSize = Param.Unsigned("Memory Block Size")
+    memBlockSize = Param.Unsigned(64, "Memory Block Size")
 
     multLatency = Param.Unsigned(1, "Latency for Multiply Operations")
     multRepeatRate = Param.Unsigned(1, "Repeat Rate for Multiply Operations")
diff -r 4842a7d78634 -r b4e30b30f695 src/cpu/inorder/comm.hh
--- a/src/cpu/inorder/comm.hh   Wed Mar 04 13:16:49 2009 -0500
+++ b/src/cpu/inorder/comm.hh   Wed Mar 04 13:17:05 2009 -0500
@@ -53,6 +53,14 @@
     uint64_t nextPC;
     InstSeqNum squashedSeqNum;
     bool includeSquashInst;
+
+    InterStageStruct()
+        :size(0),  squash(false),
+         branchMispredict(false), branchTaken(false),
+         mispredPC(0), nextPC(0),
+         squashedSeqNum(0), includeSquashInst(false)
+    { }
+
 };
 
 /** Turn This into a Class */
diff -r 4842a7d78634 -r b4e30b30f695 src/cpu/inorder/inorder_dyn_inst.cc
--- a/src/cpu/inorder/inorder_dyn_inst.cc       Wed Mar 04 13:16:49 2009 -0500
+++ b/src/cpu/inorder/inorder_dyn_inst.cc       Wed Mar 04 13:17:05 2009 -0500
@@ -84,7 +84,10 @@
 
 InOrderDynInst::InOrderDynInst()
     : traceData(NULL), cpu(cpu)
-{     initVars(); }
+{
+    seqNum = 0;
+    initVars();
+}
 
 int InOrderDynInst::instcount = 0;
 
diff -r 4842a7d78634 -r b4e30b30f695 src/cpu/inorder/pipeline_stage.cc
--- a/src/cpu/inorder/pipeline_stage.cc Wed Mar 04 13:16:49 2009 -0500
+++ b/src/cpu/inorder/pipeline_stage.cc Wed Mar 04 13:17:05 2009 -0500
@@ -38,35 +38,10 @@
 using namespace ThePipeline;
 
 PipelineStage::PipelineStage(Params *params, unsigned stage_num)
-    : numThreads(ThePipeline::MaxThreads)
 {
-    stageNum = stage_num;
-    stageWidth = ThePipeline::StageWidth;
-
-    _status = Inactive;
-
-    prevStageValid = false;
-    nextStageValid = false;
-
-    // Init. structures
-    for(int tid=0; tid < numThreads; tid++) {
-        stageStatus[tid] = Idle;
-
-        for (int stNum = 0; stNum < NumStages; stNum++) {
-            stalls[tid].stage[stNum] = false;
-        }
-        stalls[tid].resources.clear();
-
-        if (stageNum < BackEndStartStage)
-            lastStallingStage[tid] = BackEndStartStage - 1;
-        else
-            lastStallingStage[tid] = NumStages - 1;
-    }
-
-    stageBufferMax = ThePipeline::interStageBuffSize[stage_num];
+    init(params, stage_num);
 }
 
-
 void
 PipelineStage::init(Params *params, unsigned stage_num)
 {
@@ -189,7 +164,7 @@
 
     // Setup wire to write information to proper place in stage queue.
     nextStage = nextStageQueue->getWire(0);
-
+    nextStage->size = 0;
     nextStageValid = true;
 }
 
@@ -682,6 +657,9 @@
 
     bool status_change = false;
 
+    if (nextStageValid)
+        nextStage->size = 0;
+
     toNextStageIndex = 0;
 
     sortInsts();
diff -r 4842a7d78634 -r b4e30b30f695 src/cpu/inorder/resources/mult_div_unit.cc
--- a/src/cpu/inorder/resources/mult_div_unit.cc        Wed Mar 04 13:16:49 
2009 -0500
+++ b/src/cpu/inorder/resources/mult_div_unit.cc        Wed Mar 04 13:17:05 
2009 -0500
@@ -57,6 +57,8 @@
 
     div32RepeatRate = params->div32RepeatRate;
     div32Latency = params->div32Latency;    
+
+    lastMDUCycle = 0;
 }
 
 void
@@ -150,6 +152,9 @@
                 rval);
 
         if (rval != -1) {            
+            lastMDUCycle = curTick;
+            lastOpType = inst->opClass();
+            lastInstName = inst->staticInst->getName();
         }
       
         return rval;
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to