31 #include "debug/HWPrefetch.hh"
33 #include "params/IrregularStreamBufferPrefetcher.hh"
42 const IrregularStreamBufferPrefetcherParams &
p)
44 chunkSize(
p.chunk_size),
45 prefetchCandidatesPerEntry(
p.prefetch_candidates_per_entry),
47 trainingUnit(
p.training_unit_assoc,
p.training_unit_entries,
48 p.training_unit_indexing_policy,
49 p.training_unit_replacement_policy),
50 psAddressMappingCache(
p.address_map_cache_assoc,
51 p.address_map_cache_entries,
52 p.ps_address_map_cache_indexing_policy,
53 p.ps_address_map_cache_replacement_policy,
56 spAddressMappingCache(
p.address_map_cache_assoc,
57 p.address_map_cache_entries,
58 p.sp_address_map_cache_indexing_policy,
59 p.sp_address_map_cache_replacement_policy,
62 structuralAddressCounter(0)
83 bool correlated_addr_found =
false;
84 Addr correlated_addr_A = 0;
85 Addr correlated_addr_B = 0;
88 correlated_addr_found =
true;
90 correlated_addr_B =
addr;
93 assert(entry !=
nullptr);
101 if (correlated_addr_found) {
128 is_secure, correlated_addr_A);
148 if (ps_am !=
nullptr) {
155 if (sp_am ==
nullptr) {
181 if (ps_entry !=
nullptr) {
186 assert(ps_entry !=
nullptr);
190 return ps_entry->
mappings[map_index];
195 Addr structural_address,
bool is_secure,
Addr physical_address)
201 if (sp_entry !=
nullptr) {
205 assert(sp_entry !=
nullptr);
210 mapping.
address = physical_address;