Skip to content

Commit 4ec9fc8

Browse files
committed
mem: calibrate stride
use L1 miss trace train stride Change-Id: I00d63f1ac0163e7971e38edf17a7ee4cc0a9b58c
1 parent 5632e72 commit 4ec9fc8

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/mem/cache/prefetch/sms.cc

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ XSCompositePrefetcher::calculatePrefetch(const PrefetchInfo &pfi, std::vector<Ad
177177
}
178178

179179

180+
Addr stride_pf_addr = 0;
180181
if (pf_source != PrefetchSourceType::SStream && !is_active_page) {
181182
bool use_bop = enableBOP && ((pfi.isPfFirstHit() && (pf_source == PrefetchSourceType::HWP_BOP ||
182183
pf_source == PrefetchSourceType::IPCP_CPLX ||
@@ -192,7 +193,6 @@ XSCompositePrefetcher::calculatePrefetch(const PrefetchInfo &pfi, std::vector<Ad
192193
stats.bopTrainCount++;
193194
}
194195

195-
Addr stride_pf_addr = 0;
196196
bool covered_by_stride = false;
197197
//NOTICE:don't open berti & stride at the same time
198198
assert(!(enableBerti && enableSstride));
@@ -211,16 +211,6 @@ XSCompositePrefetcher::calculatePrefetch(const PrefetchInfo &pfi, std::vector<Ad
211211
}
212212
}
213213

214-
bool use_stride = !pfi.isStore() && (pfi.isCacheMiss() || pfi.isPfFirstHit()) && enableSstride;
215-
if (use_stride){
216-
DPRINTF(XSCompositePrefetcher, "Do Sstride traing/prefetching...\n");
217-
int64_t learned_bop_offset = 0;
218-
Sstride->calculatePrefetch(pfi, addresses, late, pf_source, miss_repeat, enter_new_region, is_first_shot,
219-
stride_pf_addr, learned_bop_offset);
220-
if (learned_bop_offset != 0)
221-
learnedBOP->tryAddOffset(learned_bop_offset);
222-
}
223-
224214
bool use_pht = pfi.isCacheMiss() ||
225215
(pfi.isPfFirstHit() &&
226216
(pf_source == PrefetchSourceType::SStride || pf_source == PrefetchSourceType::HWP_BOP ||
@@ -267,6 +257,17 @@ XSCompositePrefetcher::calculatePrefetch(const PrefetchInfo &pfi, std::vector<Ad
267257
}
268258
}
269259
}
260+
261+
bool use_stride = !pfi.isStore() && (pfi.isCacheMiss() || pfi.isPfFirstHit()) && enableSstride;
262+
if (use_stride){
263+
DPRINTF(XSCompositePrefetcher, "Do Sstride traing/prefetching...\n");
264+
int64_t learned_bop_offset = 0;
265+
Sstride->calculatePrefetch(pfi, addresses, late, pf_source, miss_repeat, enter_new_region, is_first_shot,
266+
stride_pf_addr, learned_bop_offset);
267+
if (learned_bop_offset != 0)
268+
learnedBOP->tryAddOffset(learned_bop_offset);
269+
}
270+
270271
}
271272

272273
XSCompositePrefetcher::ACTEntry *

0 commit comments

Comments
 (0)