fetch.hh (13453:4a7a060ea26e) fetch.hh (13559:e9983a972327)
1/*
2 * Copyright (c) 2010-2012, 2014 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 38 unchanged lines hidden (view full) ---

47#include "arch/decoder.hh"
48#include "arch/utility.hh"
49#include "base/statistics.hh"
50#include "config/the_isa.hh"
51#include "cpu/pc_event.hh"
52#include "cpu/pred/bpred_unit.hh"
53#include "cpu/timebuf.hh"
54#include "cpu/translation.hh"
1/*
2 * Copyright (c) 2010-2012, 2014 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 38 unchanged lines hidden (view full) ---

47#include "arch/decoder.hh"
48#include "arch/utility.hh"
49#include "base/statistics.hh"
50#include "config/the_isa.hh"
51#include "cpu/pc_event.hh"
52#include "cpu/pred/bpred_unit.hh"
53#include "cpu/timebuf.hh"
54#include "cpu/translation.hh"
55#include "enums/FetchPolicy.hh"
55#include "mem/packet.hh"
56#include "mem/port.hh"
57#include "sim/eventq.hh"
58#include "sim/probe/probe.hh"
59
60struct DerivO3CPUParams;
61
62/**

--- 104 unchanged lines hidden (view full) ---

167 QuiescePending,
168 ItlbWait,
169 IcacheWaitResponse,
170 IcacheWaitRetry,
171 IcacheAccessComplete,
172 NoGoodAddr
173 };
174
56#include "mem/packet.hh"
57#include "mem/port.hh"
58#include "sim/eventq.hh"
59#include "sim/probe/probe.hh"
60
61struct DerivO3CPUParams;
62
63/**

--- 104 unchanged lines hidden (view full) ---

168 QuiescePending,
169 ItlbWait,
170 IcacheWaitResponse,
171 IcacheWaitRetry,
172 IcacheAccessComplete,
173 NoGoodAddr
174 };
175
175 /** Fetching Policy, Add new policies here.*/
176 enum FetchPriority {
177 SingleThread,
178 RoundRobin,
179 Branch,
180 IQ,
181 LSQ
182 };
183
184 private:
185 /** Fetch status. */
186 FetchStatus _status;
187
188 /** Per-thread status. */
189 ThreadStatus fetchStatus[Impl::MaxThreads];
190
191 /** Fetch policy. */
176 private:
177 /** Fetch status. */
178 FetchStatus _status;
179
180 /** Per-thread status. */
181 ThreadStatus fetchStatus[Impl::MaxThreads];
182
183 /** Fetch policy. */
192 FetchPriority fetchPolicy;
184 FetchPolicy fetchPolicy;
193
194 /** List that has the threads organized by priority. */
195 std::list<ThreadID> priorityList;
196
197 /** Probe points. */
198 ProbePointArg<DynInstPtr> *ppFetch;
199 /** To probe when a fetch request is successfully sent. */
200 ProbePointArg<RequestPtr> *ppFetchRequestSent;

--- 158 unchanged lines hidden (view full) ---

359 TheISA::Decoder *decoder[Impl::MaxThreads];
360
361 private:
362 DynInstPtr buildInst(ThreadID tid, StaticInstPtr staticInst,
363 StaticInstPtr curMacroop, TheISA::PCState thisPC,
364 TheISA::PCState nextPC, bool trace);
365
366 /** Returns the appropriate thread to fetch, given the fetch policy. */
185
186 /** List that has the threads organized by priority. */
187 std::list<ThreadID> priorityList;
188
189 /** Probe points. */
190 ProbePointArg<DynInstPtr> *ppFetch;
191 /** To probe when a fetch request is successfully sent. */
192 ProbePointArg<RequestPtr> *ppFetchRequestSent;

--- 158 unchanged lines hidden (view full) ---

351 TheISA::Decoder *decoder[Impl::MaxThreads];
352
353 private:
354 DynInstPtr buildInst(ThreadID tid, StaticInstPtr staticInst,
355 StaticInstPtr curMacroop, TheISA::PCState thisPC,
356 TheISA::PCState nextPC, bool trace);
357
358 /** Returns the appropriate thread to fetch, given the fetch policy. */
367 ThreadID getFetchingThread(FetchPriority &fetch_priority);
359 ThreadID getFetchingThread();
368
369 /** Returns the appropriate thread to fetch using a round robin policy. */
370 ThreadID roundRobin();
371
372 /** Returns the appropriate thread to fetch using the IQ count policy. */
373 ThreadID iqCount();
374
375 /** Returns the appropriate thread to fetch using the LSQ count policy. */

--- 203 unchanged lines hidden ---
360
361 /** Returns the appropriate thread to fetch using a round robin policy. */
362 ThreadID roundRobin();
363
364 /** Returns the appropriate thread to fetch using the IQ count policy. */
365 ThreadID iqCount();
366
367 /** Returns the appropriate thread to fetch using the LSQ count policy. */

--- 203 unchanged lines hidden ---