From d5974eff73a3cb69e50754ba92f65a73c904c2e0 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 27 Oct 2006 06:51:28 -0400 Subject: Potential fix to clock skew problem. --HG-- extra : convert_revision : 51572523190a886fd0ff64817edc88e260c5fa9d --- src/cpu/simple/atomic.cc | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/cpu') diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc index edba55b0d..b4ea4b216 100644 --- a/src/cpu/simple/atomic.cc +++ b/src/cpu/simple/atomic.cc @@ -234,6 +234,9 @@ AtomicSimpleCPU::activateContext(int thread_num, int delay) assert(!tickEvent.scheduled()); notIdleFraction++; + //Make sure ticks are still on multiples of cycles + Tick nextTick = curTick + cycles(1) - 1; + nextTick -= (nextTick % (cycles(1))); tickEvent.schedule(curTick + cycles(delay)); _status = Running; } -- cgit v1.2.3 From a46e19f7384eb3e6a03136ddab5ba74716e43eb6 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 27 Oct 2006 07:09:14 -0400 Subject: A more complete attempt to fix the clock skew. --HG-- extra : convert_revision : b2d505de51fc5fcae5177b2a13140729474e249e --- src/cpu/simple/atomic.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/cpu') diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc index b4ea4b216..a72f6361a 100644 --- a/src/cpu/simple/atomic.cc +++ b/src/cpu/simple/atomic.cc @@ -188,8 +188,11 @@ AtomicSimpleCPU::resume() changeState(SimObject::Running); if (thread->status() == ThreadContext::Active) { - if (!tickEvent.scheduled()) - tickEvent.schedule(curTick); + if (!tickEvent.scheduled()) { + Tick nextTick = curTick + cycles(1) - 1; + nextTick -= (nextTick % (cycles(1))); + tickEvent.schedule(nextTick); + } } } } @@ -217,7 +220,9 @@ AtomicSimpleCPU::takeOverFrom(BaseCPU *oldCPU) ThreadContext *tc = threadContexts[i]; if (tc->status() == ThreadContext::Active && _status != Running) { _status = Running; - tickEvent.schedule(curTick); + Tick nextTick = curTick + cycles(1) - 1; + nextTick -= (nextTick % (cycles(1))); + tickEvent.schedule(nextTick); break; } } @@ -237,7 +242,7 @@ AtomicSimpleCPU::activateContext(int thread_num, int delay) //Make sure ticks are still on multiples of cycles Tick nextTick = curTick + cycles(1) - 1; nextTick -= (nextTick % (cycles(1))); - tickEvent.schedule(curTick + cycles(delay)); + tickEvent.schedule(nextTick); _status = Running; } -- cgit v1.2.3 From 27ef642a763bc6e0c79f0326b4c07018a42205f9 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 28 Oct 2006 03:44:55 -0400 Subject: One last adjustment to get rid of skew in the simple atomic cpu. --HG-- extra : convert_revision : 8e46929ed7da5dae6888f773de4e1ecc9b249fe0 --- src/cpu/simple/atomic.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/cpu') diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc index a72f6361a..11e4d2acb 100644 --- a/src/cpu/simple/atomic.cc +++ b/src/cpu/simple/atomic.cc @@ -240,7 +240,7 @@ AtomicSimpleCPU::activateContext(int thread_num, int delay) notIdleFraction++; //Make sure ticks are still on multiples of cycles - Tick nextTick = curTick + cycles(1) - 1; + Tick nextTick = curTick + cycles(delay + 1) - 1; nextTick -= (nextTick % (cycles(1))); tickEvent.schedule(nextTick); _status = Running; -- cgit v1.2.3 From 7f1463f94a67e6005a99e315df653bab2f056fa5 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 28 Oct 2006 04:00:24 -0400 Subject: Include the right version of faults.hh --HG-- extra : convert_revision : 4762b8ab46ac755726cc658a378c2cf5b2061dc3 --- src/cpu/ozone/back_end.hh | 2 +- src/cpu/ozone/dyn_inst_impl.hh | 2 +- src/cpu/ozone/front_end_impl.hh | 2 +- src/cpu/ozone/inorder_back_end.hh | 2 +- src/cpu/ozone/inorder_back_end_impl.hh | 2 +- src/cpu/ozone/lw_back_end.hh | 2 +- src/cpu/ozone/thread_state.hh | 2 +- src/cpu/simple/base.cc | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src/cpu') diff --git a/src/cpu/ozone/back_end.hh b/src/cpu/ozone/back_end.hh index 8debd277d..992f55c6e 100644 --- a/src/cpu/ozone/back_end.hh +++ b/src/cpu/ozone/back_end.hh @@ -35,7 +35,7 @@ #include #include -#include "arch/faults.hh" +#include "sim/faults.hh" #include "base/timebuf.hh" #include "cpu/inst_seq.hh" #include "cpu/ozone/rename_table.hh" diff --git a/src/cpu/ozone/dyn_inst_impl.hh b/src/cpu/ozone/dyn_inst_impl.hh index 0a1e1c139..9d42ab05b 100644 --- a/src/cpu/ozone/dyn_inst_impl.hh +++ b/src/cpu/ozone/dyn_inst_impl.hh @@ -28,7 +28,7 @@ * Authors: Kevin Lim */ -#include "arch/faults.hh" +#include "sim/faults.hh" #include "config/full_system.hh" #include "cpu/ozone/dyn_inst.hh" #include "kern/kernel_stats.hh" diff --git a/src/cpu/ozone/front_end_impl.hh b/src/cpu/ozone/front_end_impl.hh index 36e87ec9c..60c954517 100644 --- a/src/cpu/ozone/front_end_impl.hh +++ b/src/cpu/ozone/front_end_impl.hh @@ -30,7 +30,7 @@ #include "config/use_checker.hh" -#include "arch/faults.hh" +#include "sim/faults.hh" #include "arch/isa_traits.hh" #include "arch/utility.hh" #include "base/statistics.hh" diff --git a/src/cpu/ozone/inorder_back_end.hh b/src/cpu/ozone/inorder_back_end.hh index 76eef6fad..b2522bdc8 100644 --- a/src/cpu/ozone/inorder_back_end.hh +++ b/src/cpu/ozone/inorder_back_end.hh @@ -33,7 +33,7 @@ #include -#include "arch/faults.hh" +#include "sim/faults.hh" #include "base/timebuf.hh" #include "cpu/thread_context.hh" #include "cpu/inst_seq.hh" diff --git a/src/cpu/ozone/inorder_back_end_impl.hh b/src/cpu/ozone/inorder_back_end_impl.hh index 16ebac163..8aef9c074 100644 --- a/src/cpu/ozone/inorder_back_end_impl.hh +++ b/src/cpu/ozone/inorder_back_end_impl.hh @@ -28,7 +28,7 @@ * Authors: Kevin Lim */ -#include "arch/faults.hh" +#include "sim/faults.hh" #include "arch/types.hh" #include "cpu/ozone/inorder_back_end.hh" #include "cpu/ozone/thread_state.hh" diff --git a/src/cpu/ozone/lw_back_end.hh b/src/cpu/ozone/lw_back_end.hh index 49c6a1ae2..08a6863d0 100644 --- a/src/cpu/ozone/lw_back_end.hh +++ b/src/cpu/ozone/lw_back_end.hh @@ -36,7 +36,7 @@ #include #include -#include "arch/faults.hh" +#include "sim/faults.hh" #include "base/timebuf.hh" #include "cpu/inst_seq.hh" #include "cpu/ozone/rename_table.hh" diff --git a/src/cpu/ozone/thread_state.hh b/src/cpu/ozone/thread_state.hh index c86f3552e..985e09b52 100644 --- a/src/cpu/ozone/thread_state.hh +++ b/src/cpu/ozone/thread_state.hh @@ -31,7 +31,7 @@ #ifndef __CPU_OZONE_THREAD_STATE_HH__ #define __CPU_OZONE_THREAD_STATE_HH__ -#include "arch/faults.hh" +#include "sim/faults.hh" #include "arch/types.hh" #include "arch/regfile.hh" #include "base/callback.hh" diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc index cbb3980cb..81e9e6720 100644 --- a/src/cpu/simple/base.cc +++ b/src/cpu/simple/base.cc @@ -29,7 +29,7 @@ */ #include "arch/utility.hh" -#include "arch/faults.hh" +#include "sim/faults.hh" #include "base/cprintf.hh" #include "base/inifile.hh" #include "base/loader/symtab.hh" -- cgit v1.2.3 From ab6b6a92022af26d8d26d16928e73d6211c7cd7b Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 28 Oct 2006 04:44:05 -0400 Subject: This one really needs to be arch/faults.hh --HG-- extra : convert_revision : aad1ee04ade9f4394c9ef0386f23d6f2ca373412 --- src/cpu/simple/base.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/cpu') diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc index 81e9e6720..cbb3980cb 100644 --- a/src/cpu/simple/base.cc +++ b/src/cpu/simple/base.cc @@ -29,7 +29,7 @@ */ #include "arch/utility.hh" -#include "sim/faults.hh" +#include "arch/faults.hh" #include "base/cprintf.hh" #include "base/inifile.hh" #include "base/loader/symtab.hh" -- cgit v1.2.3 From 628a3b1d01702d1e3888c40c4a02c38c636ae6d4 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sun, 29 Oct 2006 04:04:50 -0500 Subject: An attempt to serialize the state of the micro code mechanism in the simple cpu. src/cpu/simple/base.cc: Make a microcoded op start at the current micropc, rather than starting at 0. src/cpu/thread_state.cc: Serialize the microPC and nextMicroPC --HG-- extra : convert_revision : 5302215f17312ecef3ff4c6548acb05297ee4ff6 --- src/cpu/simple/base.cc | 6 ++++-- src/cpu/thread_state.cc | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src/cpu') diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc index cbb3980cb..253d33243 100644 --- a/src/cpu/simple/base.cc +++ b/src/cpu/simple/base.cc @@ -401,13 +401,15 @@ BaseSimpleCPU::preExecute() StaticInstPtr instPtr = StaticInst::decode(makeExtMI(inst, thread->getTC())); if (instPtr->isMacroOp()) { curMacroStaticInst = instPtr; - curStaticInst = curMacroStaticInst->fetchMicroOp(0); + curStaticInst = curMacroStaticInst-> + fetchMicroOp(thread->readMicroPC()); } else { curStaticInst = instPtr; } } else { //Read the next micro op from the macro op - curStaticInst = curMacroStaticInst->fetchMicroOp(thread->readMicroPC()); + curStaticInst = curMacroStaticInst-> + fetchMicroOp(thread->readMicroPC()); } diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc index c644ae8d7..e6ebcc525 100644 --- a/src/cpu/thread_state.cc +++ b/src/cpu/thread_state.cc @@ -62,6 +62,8 @@ ThreadState::serialize(std::ostream &os) // thread_num and cpu_id are deterministic from the config SERIALIZE_SCALAR(funcExeInst); SERIALIZE_SCALAR(inst); + SERIALIZE_SCALAR(microPC); + SERIALIZE_SCALAR(nextMicroPC); #if FULL_SYSTEM Tick quiesceEndTick = 0; @@ -81,6 +83,8 @@ ThreadState::unserialize(Checkpoint *cp, const std::string §ion) // thread_num and cpu_id are deterministic from the config UNSERIALIZE_SCALAR(funcExeInst); UNSERIALIZE_SCALAR(inst); + UNSERIALIZE_SCALAR(microPC); + UNSERIALIZE_SCALAR(nextMicroPC); #if FULL_SYSTEM Tick quiesceEndTick; -- cgit v1.2.3