Memory forwarding
- 1 May 1999
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGARCH Computer Architecture News
- Vol. 27 (2) , 88-99
- https://doi.org/10.1145/307338.300987
Abstract
By optimizing data layout at run-time, we can potentially enhance the performance of caches by actively creating spatial locality, facilitating prefetching, and avoiding cache conflicts and false sharing. Unfortunately, it is extremely difficult to guarantee that such optimizations are safe in practice on today's machines, since accurately updating all pointers to an object requires perfect alias information, which is well beyond the scope of the compiler for languages such as C. To overcome this limitation, we propose a technique called memory forwarding which effectively adds a new layer of indirection within the memory system whenever necessary to guarantee that data relocation is always safe. Because actual forwarding rarely occurs (it exists as a safety net), the mechanism can be implemented as an exception in modern superscalar processors. Our experimental results demonstrate that the aggressive layout optimizations enabled by memory forwarding can result in significant speedups---more than twofold in some cases---by reducing the number of cache misses, improving the effectiveness of prefetching, and conserving memory bandwidth.Keywords
This publication has 25 references indexed in Scilit:
- The Mips R10000 superscalar microprocessorIEEE Micro, 1996
- Effective hardware-based data prefetching for high-performance processorsIEEE Transactions on Computers, 1995
- SUIFACM SIGPLAN Notices, 1994
- False sharing and spatial locality in multiprocessor cachesIEEE Transactions on Computers, 1994
- Page placement algorithms for large real-indexed cachesACM Transactions on Computer Systems, 1992
- The cache performance and optimizations of blocked algorithmsPublished by Association for Computing Machinery (ACM) ,1991
- Compact Encodings of List StructureACM Transactions on Programming Languages and Systems, 1979
- List processing in real time on a serial computerCommunications of the ACM, 1978
- A nonrecursive list compacting algorithmCommunications of the ACM, 1970
- Compact list representationCommunications of the ACM, 1969