Dynamic memory optimization using pool allocation and prefetching
- 1 December 2005
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGARCH Computer Architecture News
- Vol. 33 (5), 27-32
- https://doi.org/10.1145/1127577.1127584
Abstract
Heap memory allocation plays an important role in modern applications. Conventional heap allocators, however, generally ignore the underlying memory hierarchy of the system, favoring instead a low runtime overhead and fast response times. Unfortunately, with little concern for the memory hierarchy, the data layout may exhibit poor spatial locality, and degrade cache performance. In this paper, we describe a dynamic heap allocation scheme called pool allocation. The strategy aims to improve cache performance by inspecting memory allocation requests, and allocating memory from appropriate heap pools as dictated by the requesting context. The advantages are two fold. First, by pooling together data with a common context, we expect to improve spatial locality, as data fetched to the caches will contain fewer items from different contexts. If the allocation patterns are closely matched to the traversal patterns, the end result is faster memory performance. Second, by pooling heap objects, we expect access patterns to exhibit more regularity, thus creating more opportunities for data prefetching. Our dynamic memory optimizer exploits the increased regularity to insert prefetch instructions at runtime. The optimizations are implemented in DynamoRIO, a dynamic optimization framework. We evaluate the work using various bench-marks, and measure a 17% speedup over gcc −03 on an Athlon MP, and a 13% speedup on a Pentium 4.Keywords
This publication has 14 references indexed in Scilit:
- Automatic pool allocationPublished by Association for Computing Machinery (ACM) ,2005
- Data remapping for design space optimization of embedded memory systemsACM Transactions on Embedded Computing Systems, 2003
- Dynamic hot data stream prefetching for general-purpose programsPublished by Association for Computing Machinery (ACM) ,2002
- Predictor-directed stream buffersPublished by Association for Computing Machinery (ACM) ,2000
- Automated data-member layout of heap objects to improve memory-hierarchy performanceACM Transactions on Programming Languages and Systems, 2000
- Cache-conscious structure layoutPublished by Association for Computing Machinery (ACM) ,1999
- Prefetching using Markov predictorsInternational Conference on Acoustics, Speech, and Signal Processing (ICASSP), 1999
- Cache-conscious data placementPublished by Association for Computing Machinery (ACM) ,1998
- Memory data organization for improved cache performance in embedded processor applicationsACM Transactions on Design Automation of Electronic Systems, 1997
- An architecture for software-controlled data prefetchingPublished by Association for Computing Machinery (ACM) ,1991