From 6df196b71e058b2c827e1027416155ac8ec8cf9f Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Tue, 5 Jun 2012 01:23:09 -0400 Subject: O3: Clean up the O3 structures and try to pack them a bit better. DynInst is extremely large the hope is that this re-organization will put the most used members close to each other. --- src/cpu/o3/inst_queue_impl.hh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/cpu/o3/inst_queue_impl.hh') diff --git a/src/cpu/o3/inst_queue_impl.hh b/src/cpu/o3/inst_queue_impl.hh index 2c0779a03..ae5f93c38 100644 --- a/src/cpu/o3/inst_queue_impl.hh +++ b/src/cpu/o3/inst_queue_impl.hh @@ -859,7 +859,7 @@ InstructionQueue::scheduleReadyInsts() ++total_issued; #if TRACING_ON - issuing_inst->issueTick = curTick(); + issuing_inst->issueTick = curTick() - issuing_inst->fetchTick; #endif if (!issuing_inst->isMemRef()) { @@ -1054,8 +1054,8 @@ InstructionQueue::rescheduleMemInst(DynInstPtr &resched_inst) DPRINTF(IQ, "Rescheduling mem inst [sn:%lli]\n", resched_inst->seqNum); // Reset DTB translation state - resched_inst->translationStarted = false; - resched_inst->translationCompleted = false; + resched_inst->translationStarted(false); + resched_inst->translationCompleted(false); resched_inst->clearCanIssue(); memDepUnit[resched_inst->threadNumber].reschedule(resched_inst); @@ -1079,7 +1079,7 @@ InstructionQueue::completeMemInst(DynInstPtr &completed_inst) ++freeEntries; - completed_inst->memOpDone = true; + completed_inst->memOpDone(true); memDepUnit[tid].completed(completed_inst); count[tid]--; @@ -1098,7 +1098,7 @@ InstructionQueue::getDeferredMemInstToExecute() { for (ListIt it = deferredMemInsts.begin(); it != deferredMemInsts.end(); ++it) { - if ((*it)->translationCompleted || (*it)->isSquashed()) { + if ((*it)->translationCompleted() || (*it)->isSquashed()) { DynInstPtr ret = *it; deferredMemInsts.erase(it); return ret; @@ -1165,7 +1165,7 @@ InstructionQueue::doSquash(ThreadID tid) if (!squashed_inst->isIssued() || (squashed_inst->isMemRef() && - !squashed_inst->memOpDone)) { + !squashed_inst->memOpDone())) { DPRINTF(IQ, "[tid:%i]: Instruction [sn:%lli] PC %s squashed.\n", tid, squashed_inst->seqNum, squashed_inst->pcState()); @@ -1456,7 +1456,7 @@ InstructionQueue::dumpInsts() ++valid_num; cprintf("Count:%i\n", valid_num); } else if ((*inst_list_it)->isMemRef() && - !(*inst_list_it)->memOpDone) { + !(*inst_list_it)->memOpDone()) { // Loads that have not been marked as executed // still count towards the total instructions. ++valid_num; @@ -1473,7 +1473,7 @@ InstructionQueue::dumpInsts() (*inst_list_it)->isSquashed()); if ((*inst_list_it)->isMemRef()) { - cprintf("MemOpDone:%i\n", (*inst_list_it)->memOpDone); + cprintf("MemOpDone:%i\n", (*inst_list_it)->memOpDone()); } cprintf("\n"); @@ -1498,7 +1498,7 @@ InstructionQueue::dumpInsts() ++valid_num; cprintf("Count:%i\n", valid_num); } else if ((*inst_list_it)->isMemRef() && - !(*inst_list_it)->memOpDone) { + !(*inst_list_it)->memOpDone()) { // Loads that have not been marked as executed // still count towards the total instructions. ++valid_num; @@ -1515,7 +1515,7 @@ InstructionQueue::dumpInsts() (*inst_list_it)->isSquashed()); if ((*inst_list_it)->isMemRef()) { - cprintf("MemOpDone:%i\n", (*inst_list_it)->memOpDone); + cprintf("MemOpDone:%i\n", (*inst_list_it)->memOpDone()); } cprintf("\n"); -- cgit v1.2.3