31 #include "debug/HWPrefetch.hh"
33 #include "params/IrregularStreamBufferPrefetcher.hh"
38 const IrregularStreamBufferPrefetcherParams *
p)
40 chunkSize(
p->chunk_size),
41 prefetchCandidatesPerEntry(
p->prefetch_candidates_per_entry),
43 trainingUnit(
p->training_unit_assoc,
p->training_unit_entries,
44 p->training_unit_indexing_policy,
45 p->training_unit_replacement_policy),
46 psAddressMappingCache(
p->address_map_cache_assoc,
47 p->address_map_cache_entries,
48 p->ps_address_map_cache_indexing_policy,
49 p->ps_address_map_cache_replacement_policy,
51 p->num_counter_bits)),
52 spAddressMappingCache(
p->address_map_cache_assoc,
53 p->address_map_cache_entries,
54 p->sp_address_map_cache_indexing_policy,
55 p->sp_address_map_cache_replacement_policy,
57 p->num_counter_bits)),
58 structuralAddressCounter(0)
79 bool correlated_addr_found =
false;
80 Addr correlated_addr_A = 0;
81 Addr correlated_addr_B = 0;
84 correlated_addr_found =
true;
86 correlated_addr_B =
addr;
89 assert(entry !=
nullptr);
97 if (correlated_addr_found) {
124 is_secure, correlated_addr_A);
144 if (ps_am !=
nullptr) {
151 if (sp_am ==
nullptr) {
177 if (ps_entry !=
nullptr) {
182 assert(ps_entry !=
nullptr);
186 return ps_entry->
mappings[map_index];
191 Addr structural_address,
bool is_secure,
Addr physical_address)
197 if (sp_entry !=
nullptr) {
201 assert(sp_entry !=
nullptr);
206 mapping.
address = physical_address;
214 IrregularStreamBufferPrefetcherParams::create()