31 #include "debug/HWPrefetch.hh"
33 #include "params/IrregularStreamBufferPrefetcher.hh"
43 const IrregularStreamBufferPrefetcherParams &
p)
45 chunkSize(
p.chunk_size),
46 prefetchCandidatesPerEntry(
p.prefetch_candidates_per_entry),
48 trainingUnit(
p.training_unit_assoc,
p.training_unit_entries,
49 p.training_unit_indexing_policy,
50 p.training_unit_replacement_policy),
51 psAddressMappingCache(
p.address_map_cache_assoc,
52 p.address_map_cache_entries,
53 p.ps_address_map_cache_indexing_policy,
54 p.ps_address_map_cache_replacement_policy,
57 spAddressMappingCache(
p.address_map_cache_assoc,
58 p.address_map_cache_entries,
59 p.sp_address_map_cache_indexing_policy,
60 p.sp_address_map_cache_replacement_policy,
63 structuralAddressCounter(0)
84 bool correlated_addr_found =
false;
85 Addr correlated_addr_A = 0;
86 Addr correlated_addr_B = 0;
89 correlated_addr_found =
true;
91 correlated_addr_B =
addr;
94 assert(entry !=
nullptr);
102 if (correlated_addr_found) {
129 is_secure, correlated_addr_A);
149 if (ps_am !=
nullptr) {
156 if (sp_am ==
nullptr) {
182 if (ps_entry !=
nullptr) {
187 assert(ps_entry !=
nullptr);
191 return ps_entry->
mappings[map_index];
196 Addr structural_address,
bool is_secure,
Addr physical_address)
202 if (sp_entry !=
nullptr) {
206 assert(sp_entry !=
nullptr);
211 mapping.
address = physical_address;