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 --- |