@Aquaticfuller @DiyouS as discussed this morning:
Summary
Instruction to request transferring a cacheline from DRAM into L1 (non-blocking of course).
Usage example
This can be used in many places where we operate on things in a loop: For example, when we iterate over UEs in an array, we can prefetch some data for the next UE while we process the current one.
For those array-like accesses, stride or other HW prefetcher can work. However, the SW instruction can also be used for linked list prefetching: The input SDU from PDCP are chained in a linked list. When we start processing one entry, we can already issue the prefetch for the next entry, to bring it into L1.
Note that for SW prefetch, timeliness is always a bit of an issue. However, I think the working set while we process one TTI (i.e. between scheduling phases) should usually fit the local L1. So we of course cant fit all data for all UEs (which is why we need the prefetch in the first place), but we should be able to fit the data for the UEs we need in a TTI. So for timeliness, prefetching too early is less of an issue here. Prefetching to late would of course be useless.
@Aquaticfuller @DiyouS as discussed this morning:
Summary
Instruction to request transferring a cacheline from DRAM into L1 (non-blocking of course).
Usage example
This can be used in many places where we operate on things in a loop: For example, when we iterate over UEs in an array, we can prefetch some data for the next UE while we process the current one.
For those array-like accesses, stride or other HW prefetcher can work. However, the SW instruction can also be used for linked list prefetching: The input SDU from PDCP are chained in a linked list. When we start processing one entry, we can already issue the prefetch for the next entry, to bring it into L1.
Note that for SW prefetch, timeliness is always a bit of an issue. However, I think the working set while we process one TTI (i.e. between scheduling phases) should usually fit the local L1. So we of course cant fit all data for all UEs (which is why we need the prefetch in the first place), but we should be able to fit the data for the UEs we need in a TTI. So for timeliness, prefetching too early is less of an issue here. Prefetching to late would of course be useless.