Admittedly one of the more odd PRs that I've submitted.
This PR adds two inline functions: bsg_amo_prefetch and bsg_lw_prefetch. These functions can be used to prefetch data into the cache for a tile to read later.
bsg_amo_prefetch uses amoor.w, but with an operand of 0 so it doesn't disturb data. However, the cache doesn't know this so it pollutes the dirty bit. Therefore, bsg_amo_prefetch should only be used to verify prefetching behavior. In the statistics parser, correct use of bsg_amo_prefetch will drive the load/store miss rate to 0
After verifying behavior with bsg_amo_prefetch replace all instances with bsg_lw_prefetch
bsg_amo_prefetch and bsg_lw_prefetch both target x0 to avoid architectural dependencies
Use amo to verify behavioral functionality of preloads, then lw in performance code since amo marks cache lines as dirty
Admittedly one of the more odd PRs that I've submitted.
This PR adds two inline functions:
bsg_amo_prefetch
andbsg_lw_prefetch
. These functions can be used to prefetch data into the cache for a tile to read later.bsg_amo_prefetch
usesamoor.w
, but with an operand of 0 so it doesn't disturb data. However, the cache doesn't know this so it pollutes the dirty bit. Therefore,bsg_amo_prefetch
should only be used to verify prefetching behavior. In the statistics parser, correct use ofbsg_amo_prefetch
will drive the load/store miss rate to 0After verifying behavior with
bsg_amo_prefetch
replace all instances withbsg_lw_prefetch