43#ifndef __MEM_CACHE_PREFETCH_FDP_HH__
44#define __MEM_CACHE_PREFETCH_FDP_HH__
57struct FetchDirectedPrefetcherParams;
148 return this->addr ==
a;
Information provided to probes on a cache event.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Class containing the information needed by the prefetch to train and generate new prefetch requests.
Base(const BasePrefetcherParams &p)
~FetchDirectedPrefetcher()=default
std::list< PrefetchRequest > pfq
The prefetch queue.
void translationComplete(PrefetchRequest *pf_req, const bool failed)
A translation has completed and can now be added to the PFQ.
const unsigned int tqSize
Translation queue size: Maximum number of outstanding translations.
const bool markReqAsPrefetch
Mark memory requests as prefetches.
gem5::prefetch::FetchDirectedPrefetcher::Stats stats
const bool cacheSnoop
Probe the cache before a prefetch gets inserted into the PFQ.
void notifyFTQRemove(const o3::FetchTargetPtr &ft)
Notifies the prefetcher that a fetch target was removed from the FTQ.
BaseCPU * cpu
Pointer to the CPU object that contains the FTQ.
std::list< PrefetchRequest > translationq
void setCache(BaseCache *_cache)
const unsigned int pfqSize
Prefetch queue size: Maximum number of queued prefetches.
const bool squashPrefetches
Squash prefetches in case its fetch target is removed from the FTQ.
const unsigned int latency
The latency of the prefetcher.
void regProbeListeners() override
Base class overrides.
void notify(const CacheAccessProbeArg &acc, const PrefetchInfo &pfi) override
Notify functions are not used by this prefetcher.
BaseCache * cache
Pointer to the cache it is attached to.
FetchDirectedPrefetcher(const FetchDirectedPrefetcherParams &p)
Tick nextPrefetchReadyTime() const override
std::vector< ProbeListenerPtr<> > listeners
Array of probe listeners.
PacketPtr getPacket() override
Gets a packet from the prefetch queue to be prefetched.
void notifyFTQInsert(const o3::FetchTargetPtr &ft)
Notifies the prefetcher that a new fetch target was inserted into the FTQ.
A simple distribution stat.
This is a simple scalar statistic, like a counter.
Declares a basic cache interface BaseCache.
Miss and writeback queue declarations.
std::shared_ptr< FetchTarget > FetchTargetPtr
Copyright (c) 2024 Arm Limited All rights reserved.
std::shared_ptr< FaultBase > Fault
int16_t ThreadID
Thread index/ID type.
std::shared_ptr< Request > RequestPtr
uint64_t Tick
Tick count type.
The prefetch queue entry objects.
PrefetchRequest(FetchDirectedPrefetcher &_owner, uint64_t _addr, ThreadID tid, o3::FTSeqNum ftn)
bool operator==(const int &a) const
Tick readyTime
The time when the prefetch is ready to be sent to the cache.
bool canceled
Marks a Prefetch Request as canceled if notifyFTQRemove was called during translation.
void startTranslation()
Issues the translation request.
const uint64_t addr
The virtual address.
RequestPtr req
The request and packet that will be sent to the cache.
const o3::FTSeqNum ftn
The fetch target number that created this request.
FetchDirectedPrefetcher & owner
Owner of the packet.
void finish(const Fault &fault, const RequestPtr &req, ThreadContext *tc, BaseMMU::Mode mode) override
void createPkt()
Creates the packet that is send to the memory.
void markDelayed() override
Signal that the translation has been delayed due to a hw page table walk.
statistics::Scalar pfInCachePrefetched
statistics::Scalar pfInPFQ
statistics::Scalar pfPacketsCreated
statistics::Scalar pfqDrops
Stats(statistics::Group *parent, int pfq_size, int tq_size)
statistics::Distribution pfqSizeDistAtNotify
statistics::Scalar tqDrops
statistics::Scalar pfSquashed
statistics::Scalar translationSuccess
statistics::Scalar pfIdentified
statistics::Scalar pfqInserts
statistics::Distribution tqSizeDistAtNotify
statistics::Scalar tqPops
statistics::Scalar pfInTQ
statistics::Scalar tqInserts
statistics::Scalar pfInCache
statistics::Scalar pfCandidatesAdded
statistics::Scalar pfqPops
statistics::Scalar translationFail
statistics::Scalar fdipInsertions