9,526
edits
(→Caches) |
(→Caches) |
||
Line 35: | Line 35: | ||
* Primary references: Allen/Kennedy ch. 9, Muchnick ch. 20. See also [[Architecture#Caches|Caches]] on the [[Architecture]] page. | * Primary references: Allen/Kennedy ch. 9, Muchnick ch. 20. See also [[Architecture#Caches|Caches]] on the [[Architecture]] page. | ||
* The benefits of spatial locality can now be taken advantage of at the more natural word level. | * The benefits of spatial locality can now be taken advantage of at the more natural word level. | ||
* Loop interchange -- are we striding through nested loops optimally? If not, we can interchange levels, provided all dependencies are preserved. Especially powerful when combined with hardware- or software-based prefetching and further augmented with non-blocking caches. | * Loop interchange -- are we striding through nested loops optimally? If not, we can interchange levels, provided all dependencies are preserved. Especially powerful when combined with hardware- or software-based prefetching and further augmented with non-blocking caches. Optimal interpositioning is NP-hard in general but excellent heuristics exist. See Allen/Kennedy p. 472-474. | ||
** This can be valuable enough that we perform small transformations to accommodate it: loop alignment, loop peeling, etc | ** This can be valuable enough that we perform small transformations to accommodate it: loop alignment, loop peeling, etc | ||