diff options
author | Korey Sewell <ksewell@umich.edu> | 2009-03-04 13:16:49 -0500 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2009-03-04 13:16:49 -0500 |
commit | 846f953c2bc8f9922afe62c30e60f9b5b531d09e (patch) | |
tree | b9c325f5d90232b1b6def93e212344698df49b67 | |
parent | e4aa4ca40c0a5ab5946914cc997e0a9bd288c861 (diff) | |
download | gem5-846f953c2bc8f9922afe62c30e60f9b5b531d09e.tar.xz |
Give TimeBuffer an ID that can be set. Necessary because InOrder uses generic stages so w/o an ID there is no way to differentiate buffers when debugging
-rw-r--r-- | src/base/timebuf.hh | 13 | ||||
-rw-r--r-- | src/cpu/inorder/cpu.cc | 4 | ||||
-rw-r--r-- | src/cpu/inorder/pipeline_stage.cc | 9 |
3 files changed, 19 insertions, 7 deletions
diff --git a/src/base/timebuf.hh b/src/base/timebuf.hh index 348f7a673..9f9fc32b5 100644 --- a/src/base/timebuf.hh +++ b/src/base/timebuf.hh @@ -43,6 +43,7 @@ class TimeBuffer int past; int future; int size; + int _id; char *data; std::vector<char *> index; @@ -148,6 +149,8 @@ class TimeBuffer new (ptr) T; ptr += sizeof(T); } + + _id = -1; } TimeBuffer() @@ -162,6 +165,16 @@ class TimeBuffer delete [] data; } + void id(int id) + { + _id = id; + } + + int id() + { + return _id; + } + void advance() { diff --git a/src/cpu/inorder/cpu.cc b/src/cpu/inorder/cpu.cc index 94a6efce9..1836989af 100644 --- a/src/cpu/inorder/cpu.cc +++ b/src/cpu/inorder/cpu.cc @@ -230,11 +230,9 @@ InOrderCPU::InOrderCPU(Params *params) } // Initialize TimeBuffer Stage Queues - // For now just have these time buffers be pretty big. - // @note: This could be statically allocated but changes - // would have to be made to the standard time buffer class. for (int stNum=0; stNum < NumStages - 1; stNum++) { stageQueue[stNum] = new StageQueue(NumStages, NumStages); + stageQueue[stNum]->id(stNum); } diff --git a/src/cpu/inorder/pipeline_stage.cc b/src/cpu/inorder/pipeline_stage.cc index 547b42537..f356c0e1a 100644 --- a/src/cpu/inorder/pipeline_stage.cc +++ b/src/cpu/inorder/pipeline_stage.cc @@ -556,8 +556,8 @@ PipelineStage::sortInsts() if (prevStageValid) { int insts_from_prev_stage = prevStage->size; - DPRINTF(InOrderStage, "%i insts available from previous stage.\n", - insts_from_prev_stage); + DPRINTF(InOrderStage, "%i insts available from stage buffer %i.\n", + insts_from_prev_stage, prevStageQueue->id()); for (int i = 0; i < insts_from_prev_stage; ++i) { @@ -985,8 +985,9 @@ PipelineStage::sendInstToNextStage(DynInstPtr inst) tid, cpu->pipelineStage[next_stage]->stageBufferAvail()); DPRINTF(InOrderStage, "[tid:%u]: [sn:%i]: being placed into " - "index %i stage %i queue.\n", - tid, inst->seqNum, toNextStageIndex, inst->nextStage); + "index %i of stage buffer %i queue.\n", + tid, inst->seqNum, toNextStageIndex, + cpu->pipelineStage[prev_stage]->nextStageQueue->id()); int next_stage_idx = cpu->pipelineStage[prev_stage]->nextStage->size; |