diff --git a/src/cpu/o3/O3CPU.py b/src/cpu/o3/O3CPU.py index 51d912147c..9f3685dd96 100644 --- a/src/cpu/o3/O3CPU.py +++ b/src/cpu/o3/O3CPU.py @@ -47,8 +47,8 @@ from m5.objects.FUPool import * from m5.objects.O3Checker import O3Checker from m5.objects.BranchPredictor import * -class FetchPolicy(ScopedEnum): - vals = [ 'SingleThread', 'RoundRobin', 'Branch', 'IQCount', 'LSQCount' ] +class SMTFetchPolicy(ScopedEnum): + vals = [ 'RoundRobin', 'Branch', 'IQCount', 'LSQCount' ] class SMTQueuePolicy(ScopedEnum): vals = [ 'Dynamic', 'Partitioned', 'Threshold' ] @@ -159,7 +159,7 @@ class DerivO3CPU(BaseCPU): numROBEntries = Param.Unsigned(192, "Number of reorder buffer entries") smtNumFetchingThreads = Param.Unsigned(1, "SMT Number of Fetching Threads") - smtFetchPolicy = Param.FetchPolicy('SingleThread', "SMT Fetch policy") + smtFetchPolicy = Param.SMTFetchPolicy('RoundRobin', "SMT Fetch policy") smtLSQPolicy = Param.SMTQueuePolicy('Partitioned', "SMT LSQ Sharing Policy") smtLSQThreshold = Param.Int(100, "SMT LSQ Threshold Sharing Parameter") diff --git a/src/cpu/o3/deriv.cc b/src/cpu/o3/deriv.cc index fe1b76b48b..757af6f4e3 100644 --- a/src/cpu/o3/deriv.cc +++ b/src/cpu/o3/deriv.cc @@ -55,8 +55,5 @@ DerivO3CPUParams::create() numThreads = actual_num_threads; - if (actual_num_threads > 1 && smtFetchPolicy == FetchPolicy::SingleThread) - smtFetchPolicy = FetchPolicy::RoundRobin; - return new DerivO3CPU(this); } diff --git a/src/cpu/o3/fetch.hh b/src/cpu/o3/fetch.hh index 16f0c5eb68..e47059a688 100644 --- a/src/cpu/o3/fetch.hh +++ b/src/cpu/o3/fetch.hh @@ -49,7 +49,7 @@ #include "cpu/pred/bpred_unit.hh" #include "cpu/timebuf.hh" #include "cpu/translation.hh" -#include "enums/FetchPolicy.hh" +#include "enums/SMTFetchPolicy.hh" #include "mem/packet.hh" #include "mem/port.hh" #include "sim/eventq.hh" @@ -205,7 +205,7 @@ class DefaultFetch ThreadStatus fetchStatus[Impl::MaxThreads]; /** Fetch policy. */ - FetchPolicy fetchPolicy; + SMTFetchPolicy fetchPolicy; /** List that has the threads organized by priority. */ std::list priorityList; diff --git a/src/cpu/o3/fetch_impl.hh b/src/cpu/o3/fetch_impl.hh index d38420b7ec..28b1357ed8 100644 --- a/src/cpu/o3/fetch_impl.hh +++ b/src/cpu/o3/fetch_impl.hh @@ -111,10 +111,6 @@ DefaultFetch::DefaultFetch(O3CPU *_cpu, DerivO3CPUParams *params) fatal("cache block (%u bytes) is not a multiple of the " "fetch buffer (%u bytes)\n", cacheBlkSize, fetchBufferSize); - // Figure out fetch policy - panic_if(fetchPolicy == FetchPolicy::SingleThread && numThreads > 1, - "Invalid Fetch Policy for a SMT workload."); - // Get the size of an instruction. instSize = sizeof(TheISA::MachInst); @@ -1415,13 +1411,13 @@ DefaultFetch::getFetchingThread() { if (numThreads > 1) { switch (fetchPolicy) { - case FetchPolicy::RoundRobin: + case SMTFetchPolicy::RoundRobin: return roundRobin(); - case FetchPolicy::IQCount: + case SMTFetchPolicy::IQCount: return iqCount(); - case FetchPolicy::LSQCount: + case SMTFetchPolicy::LSQCount: return lsqCount(); - case FetchPolicy::Branch: + case SMTFetchPolicy::Branch: return branchCount(); default: return InvalidThreadID;