Aggarwal, AneeshBadawy, Abdel-Hameed A.Tseng, Chau-WenYeung, DonaldSoftware prefetching and locality optimizations are techniques for overcoming the gap between processor and memory speeds. Using the SimpleScalar simulator, we evaluate the impact of memory bandwidth and latency on the effectiveness of software prefetching and locality optimizations on three types of applications: regular scientific codes, irregular scientific codes, and pointer-based codes. We find software prefetching hides memory costs but increases instruction count and requires greater memory bandwidth. Locality optimizations change the computation order and data layout at compile or run time to eliminate cache misses, reducing memory costs without requiring more memory bandwidth. Combining prefetching and locality optimizations can improve performance, but interactions can also nullify the benefits of prefetching. We propose several algorithms to better integrate software prefetching and locality optimizations. (Also cross-referenced as UMIACS-TR-2000-57)en-USEvaluating the Impact of Memory System Performance on Software Prefetching and Locality OptimizationsTechnical Report